【问题标题】:loopback query/find with limit on specific criteria对特定条件有限制的环回查询/查找
【发布时间】:2019-09-26 21:34:30
【问题描述】:

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

【问题讨论】:

    标签: node.js mongodb loopbackjs loopback


    【解决方案1】:

    Scope 可以做到这一点,请参阅Include with filters

    所以我会请求包含消息的房间,使用范围来限制消息的数量。

    【讨论】:

      【解决方案2】:

      正如 Olivier 所说,但举个例子。

      您应该搜索房间并包含范围限制的消息,例如:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-25
        • 2018-10-13
        • 1970-01-01
        • 2012-09-17
        • 1970-01-01
        相关资源
        最近更新 更多