高级查询(分页、排序、比较) POST
通过以下接口,您可以使用条件操作符,更好的过滤结果。
url
http://您已备案域名/v5/classes/<collection_name>/query
ObjectID
通过 _id
字段查询指定数据时,不能直接传递 ID
值,而是需要通过系统内置 ObjectID
函数,将 ID
字符串转换为 ObjectID
类型(⚠️ 注意:一定要是正确的 ID
才能被转换)。
- 查询
ID
为abc
和123
的数据
json
{
"page": 1,
"size": 10,
"sort": { "age": -1 },
"body": { "_id": { "$in": ["ObjectID('abc')", "ObjectID('123')"] } }
}
Date 类型
由于 JSON
数据中只存在字符串类型,不存在 Date
类型数据。因此,您可以使用系统内置 Date
函数,将 RFC3339
格式的日期时间类型的字符串转换为 Date
类型(⚠️ 注意:一定要是 RFC3339
规范的才能被正确转换)。
- 查询指定日期的数据(查询
2017-07-09 00:00:00
-2017-07-10 00:00:00
创建的所有数据)
json
{
"page": 1,
"size": 10,
"sort": { "age": -1 },
"body": {
"createdAt": {
"$gte": "Date('2017-07-09T00:00:00.000Z')",
"$lt": "Date('2017-07-10T00:00:00.000Z')"
}
}
}
条件操作符
操作符 | 说明 |
---|---|
$eq | 等于 |
$ne | 不等于 |
$gt | 大于 |
$lt | 小于 |
$gte | 大于等于 |
$lte | 小于等于 |
$in | 在给定的数组中 |
$nin | 不在给定的数组中 |
$and | 逻辑与 |
$or | 逻辑或 |
$not | 逻辑非 |
$nor | 不匹配任何条件 |
$exists | 判断字段是否存在 |
$regex | 匹配正则表达式 |
$all | 匹配数组中包含所有指定元素的数据 |
$elemMatch | 匹配数组中至少一个元素满足所有指定条件的数据 |
$size | 匹配数组大小 |
$bitsAllSet | 所有指定位都设置为 1 |
$bitsAnySet | 指定位之一设置为 1 |
$bitsAllClear | 所有指定位都清除为 0 |
$bitsAnyClear | 指定位之一清除为 0 |
$text | 执行全文本搜索 |
$year , $month , $dayOfMonth , $hour , $minute , $second , $millisecond | 日期操作符,用于提取日期字段的各个部分。 |
请求示例
注意修改大括号中的内容。App ID
、API Key
、Secret Key
请前往仪表盘获取。sign
为签名,签名方式详见请求签名。
shell
curl --location --request POST 'http://您已备案域名/v5/classes/<collection_name>/query' \
--header 'X-T1Y-Application-ID: {{app_id}}' \
--header 'X-T1Y-Api-Key: {{api_key}}' \
--header 'X-T1Y-Safe-NonceStr: {{客户端随机生成的32位随机码}}' \
--header 'X-T1Y-Safe-Timestamp: {{Unix时间戳,精确到秒}}' \
--header 'X-T1Y-Safe-Sign: {{MD5(path+app_id+api_key+客户端随机生成的32位随机码+Unix时间戳+Secret_Key)}}' \
--header 'Content-Type: application/json' \
--data-raw '{"page": 1, "size": 10, "sort": {"age": -1}, "body": {"age": {"$gt": 20}}}'
shell
curl --location --request POST "http://您已备案域名/v5/classes/<collection_name>/query" ^
--header "X-T1Y-Application-ID: {{app_id}}" ^
--header "X-T1Y-Api-Key: {{api_key}}" ^
--header "X-T1Y-Safe-NonceStr: {{客户端随机生成的32位随机码}}" ^
--header "X-T1Y-Safe-Timestamp: {{Unix时间戳,精确到秒}}" ^
--header "X-T1Y-Safe-Sign: {{MD5(path+app_id+api_key+客户端随机生成的32位随机码+Unix时间戳+Secret_Key)}}" ^
--header "Content-Type: application/json" ^
--data-raw "{\"page\": 1, \"size\": 10, \"sort\": {\"age\": -1}, \"body\": {\"age\": {\"$gt\": 20}}}"
请求体 --data-raw
中的数组元素解析:page
为页码,size
为每页条目数,sort
为排序(-1 为降序,1 为升序),body
为查询过滤器。以上则是表示查询第 1 页的数据,每页 10 条,条件为 age
大于 20 岁的,并以降序的方式返回结果。
响应示例
操作成功时 http
状态码以及 code
永远是 200
。若需校验响应数据请参考响应签名校验(可选)。
json
{
"code": 200,
"data": {
"data": [
{
"_id": "65435f093b239fddbc3f646e",
"name": "王华华",
"age": 23,
"sex": "女",
"createdAt": "2023-11-04T09:25:24.707+08:00",
"updatedAt": "2023-11-04T09:25:24.707+08:00"
},
{
"_id": "65435f093b239fddbc3f646e",
"name": "王华",
"age": 21,
"sex": "男",
"createdAt": "2023-11-04T09:25:24.707+08:00",
"updatedAt": "2023-11-04T09:25:24.707+08:00"
}
]
},
"message": "ok"
}
json
{
"code": 400,
"data": null,
"message": "This is an exception message."
}