环回 query/find 对特定标准有限制
loopback query/find with limit on specific criteria
我正在使用 mongodb 在 strongloop
loopback
v2 中构建一个非常复杂的查找查询,我想在其中限制搜索的某些部分。
例如,如果我有一个聊天室列表,并且只想为每个房间提取最近 200 条聊天记录,我该如何实现?
Messages.find({
"order": "created ASC",
"where": {
"or": [
{roomId: '111'}, // #todo: Limit this room to 200 messages
{roomId: '222'}, // #todo: Limit this room to 200 messages
]
}
}, ()=>{})
不要忘记有些房间可能没有消息...所以我不能在这个例子中做全局 limit: 400
。
Scope 可以做到这一点,请参阅 Include with filters。
所以我会请求包含消息的房间,使用范围来限制消息的数量。
如 Olivier 所述,但有示例。
您应该搜索房间并包含具有范围限制的消息,例如:
Rooms.find({
"where": {
_id: { inq: ["111", "222", ...]}
},
"include": {
"relation":"messages",
"order": "created ASC"
"scope:{
limit: 200
}
}
}, ()=>{})
我正在使用 mongodb 在 strongloop
loopback
v2 中构建一个非常复杂的查找查询,我想在其中限制搜索的某些部分。
例如,如果我有一个聊天室列表,并且只想为每个房间提取最近 200 条聊天记录,我该如何实现?
Messages.find({
"order": "created ASC",
"where": {
"or": [
{roomId: '111'}, // #todo: Limit this room to 200 messages
{roomId: '222'}, // #todo: Limit this room to 200 messages
]
}
}, ()=>{})
不要忘记有些房间可能没有消息...所以我不能在这个例子中做全局 limit: 400
。
Scope 可以做到这一点,请参阅 Include with filters。
所以我会请求包含消息的房间,使用范围来限制消息的数量。
如 Olivier 所述,但有示例。
您应该搜索房间并包含具有范围限制的消息,例如:
Rooms.find({
"where": {
_id: { inq: ["111", "222", ...]}
},
"include": {
"relation":"messages",
"order": "created ASC"
"scope:{
limit: 200
}
}
}, ()=>{})