Skip to content

高级查询(分页、排序、比较) POST

通过以下接口,您可以使用条件操作符,更好的过滤结果。

url
http://您已备案域名/v5/classes/<collection_name>/query
ObjectID

通过 _id 字段查询指定数据时,不能直接传递 ID 值,而是需要通过系统内置 ObjectID 函数,将 ID 字符串转换为 ObjectID 类型(⚠️ 注意:一定要是正确的 ID 才能被转换)。

  • 查询 IDabc123 的数据
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 IDAPI KeySecret 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."
}

技术支持、市场合作:wwwanghua@outlook.com