过滤与排序
数据模型支持通过 filter
来进行查询过滤,支持通过 orderBy
来进行查询排序
下面的查询语句会进行下列过滤和排序
- 过滤正文不为空且标题包含“世界”的文章
- 按照创建时间倒序
const { data } = await models.post.list({
filter: {
where: {
body: {
$nempty: true,
},
title: {
$search: "世界",
},
},
},
orderBy: [
{
createdAt: "desc", // 创建时间,倒序
},
],
});
console.log(data);
// {
// "records": [
// {
// "owner": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "createdAt": 1718263769729,
// "createBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "updateBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "_openid": "VEVVny3JknjjDtpzzp2AAQ",
// "_id": "9G5C0WQN26",
// "title": "你好,世界👋",
// "body": "31",
// "updatedAt": 1718264815088
// },
// {
// "owner": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "createdAt": 1718263869238,
// "createBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "updateBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "_openid": "VEVVny3JknjjDtpzzp2AAQ",
// "_id": "9G5C9VQBZ4",
// "title": "你好,世界👋",
// "body": "222",
// "updatedAt": 1718264796634
// }
// ]
// }
过滤 filter
数据模型支持组合多种过滤方式进行查询
过滤条件和运算符
请参阅 SDK 参考文档以获取运算符的完整列表
组合查询
可以使用逻辑运算符(例如 $and
and $or
)按条件组合进行过滤。
下面的查询语句会过滤正文字段不存在,或正文字段为空字符串的文章
const { data } = await models.post.list({
filter: {
where: {
$or: [
{
body: {
$empty: true,
},
},
{
body: {
$eq: "",
},
},
],
},
},
});
console.log(data);
过滤空字段
下面的查询语句会过滤正文字段不存在的文章
const { data } = await models.post.list({
filter: {
where: {
body: {
$empty: true,
},
},
},
});
console.log(data);
过滤非空字段
下面的查询语句会过滤正文字段不为空的文章
const { data } = await models.post.list({
filter: {
where: {
body: {
$nempty: true,
},
},
},
});
console.log(data);
按照关系过滤
下面的查询语句会过滤评论内容不为空的文章,使用了 relateWhere
来进行关联模型的筛选,使用select
来选择返回的字段
const { data } = await models.post.list({
filter: {
relateWhere: {
comments: {
where: {
comment: {
$nempty: true,
},
},
},
},
where: {},
},
select: {
comments: {
comment: true,
},
$master: true,
},
});
console.log(data);
// {
// "records": [
// {
// "owner": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "createdAt": 1718267474142,
// "createBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "comments": [
// {
// "comment": "11",
// "_id": "9G5TTNF8G8"
// }
// ],
// "updateBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "_openid": "VEVVny3JknjjDtpzzp2AAQ",
// "_id": "9G5MUV3RLC",
// "title": "",
// "body": "",
// "slug": "",
// "updatedAt": 1718267474142
// },
// {
// "owner": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "createdAt": 1718263769729,
// "createBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "comments": [
// {
// "comment": "",
// "_id": "9G5ESK0BP6"
// }
// ],
// "updateBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "_openid": "VEVVny3JknjjDtpzzp2AAQ",
// "_id": "9G5C0WQN26",
// "title": "你好,世界👋",
// "body": "31",
// "updatedAt": 1718264815088
// },
// {
// "owner": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "createdAt": 1718263769729,
// "createBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "comments": [
// {
// "comment": "1",
// "_id": "9G5C8CCE1N"
// }
// ],
// "updateBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "_openid": "VEVVny3JknjjDtpzzp2AAQ",
// "_id": "9G5C0WQN27",
// "title": "Bonjour le Monde👋",
// "body": "222",
// "slug": "111",
// "updatedAt": 1718263858534
// },
// {
// "owner": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "createdAt": 1718263769729,
// "createBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "comments": [
// {
// "comment": "222",
// "_id": "9G5C9SB840"
// }
// ],
// "updateBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "_openid": "VEVVny3JknjjDtpzzp2AAQ",
// "_id": "9G5C0WQN25",
// "title": "Hola Mundo 👋",
// "updatedAt": 1718263769729
// },
// {
// "owner": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "createdAt": 1718100296618,
// "createBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "comments": [
// {
// "comment": "11",
// "_id": "9FSLL6SU6L"
// }
// ],
// "updateBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "_openid": "VEVVny3JknjjDtpzzp2AAQ",
// "_id": "9FSLKTQHB9",
// "title": "Bonjour le Monde👋",
// "updatedAt": 1718100296618
// },
// {
// "owner": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "createdAt": 1718099611319,
// "createBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "comments": [
// {
// "comment": "2222",
// "_id": "9FSJUCDH2G"
// }
// ],
// "updateBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "_openid": "VEVVny3JknjjDtpzzp2AAQ",
// "_id": "9FSJS16Z1A",
// "title": "11",
// "body": "11",
// "slug": "11",
// "updatedAt": 1718099611319
// },
// {
// "owner": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "createdAt": 1718096503886,
// "createBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "comments": [
// {
// "comment": "11",
// "_id": "9FSAJF3GLG"
// }
// ],
// "updateBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "_openid": "VEVVny3JknjjDtpzzp2AAQ",
// "_id": "9FSAHWM9VV",
// "title": "Bonjour le Monde👋",
// "updatedAt": 1718096503886
// }
// ]
// }
排序 orderBy
我们也可以构造其他多种排序方式,比如按标题和更新时间进行排序,具体可以参考orderBy
来进行查询排序
const { data } = await models.post.list({
orderBy: [
{
title: "asc", // 先按照标题进行升序排序
},
{
updatedAt: "desc", // 再按更新时间升序排序
},
],
});
console.log(data);
// {
// "records": [
// {
// "owner": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "createdAt": 1718267474142,
// "createBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "updateBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "_openid": "VEVVny3JknjjDtpzzp2AAQ",
// "_id": "9G5MUV3RLC",
// "title": "",
// "body": "",
// "slug": "",
// "updatedAt": 1718267474142
// },
// {
// "owner": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "createdAt": 1718099611319,
// "createBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "updateBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "_openid": "VEVVny3JknjjDtpzzp2AAQ",
// "_id": "9FSJS16Z1A",
// "title": "11",
// "body": "11",
// "slug": "11",
// "updatedAt": 1718099611319
// },
// {
// "owner": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "createdAt": 1718263869238,
// "createBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "updateBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "_openid": "VEVVny3JknjjDtpzzp2AAQ",
// "_id": "9G5C9VQBZ5",
// "title": "Bonjour le Monde👋",
// "updatedAt": 1718263869238
// },
// {
// "owner": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "createdAt": 1718263769729,
// "createBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "updateBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "_openid": "VEVVny3JknjjDtpzzp2AAQ",
// "_id": "9G5C0WQN27",
// "title": "Bonjour le Monde👋",
// "body": "222",
// "slug": "111",
// "updatedAt": 1718263858534
// },
// {
// "owner": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "createdAt": 1718100296618,
// "createBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "updateBy": "Anonymous(VEVVny3JknjjDtpzzp2AAQ)",
// "_openid": "VEVVny3JknjjDtpzzp2AAQ",
// "_id": "9FSLKTQHB9",
// "title": "Bonjour le Monde👋",
// "updatedAt": 1718100296618
// },
// ]
// }