环回查询/查找特定条件的限制

时间:2019-09-26 21:34:30

标签: node.js mongodb loopbackjs loopback

我正在使用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

2 个答案:

答案 0 :(得分:0)

示波器可以做到这一点,请参阅Include with filters

因此,我将请求包含消息的房间,并使用范围限制消息的数量。

答案 1 :(得分:0)

如Olivier所述,但有示例。

您应该搜索房间,并添加具有范围限制的消息,例如:

Rooms.find({
   "where": {
      _id: { inq: ["111", "222", ...]} 
   },
   "include": {
      "relation":"messages",
      "order": "created ASC"
      "scope:{
         limit: 200
      }
   }
 }, ()=>{})