我正在使用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
。
答案 0 :(得分:0)
示波器可以做到这一点,请参阅Include with filters。
因此,我将请求包含消息的房间,并使用范围限制消息的数量。
答案 1 :(得分:0)
如Olivier所述,但有示例。
您应该搜索房间,并添加具有范围限制的消息,例如:
Rooms.find({
"where": {
_id: { inq: ["111", "222", ...]}
},
"include": {
"relation":"messages",
"order": "created ASC"
"scope:{
limit: 200
}
}
}, ()=>{})