环回 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
      }
   }
 }, ()=>{})