【问题标题】:How to sort & limit mongo $lookup without applying the filter on every result?如何在不对每个结果应用过滤器的情况下对 mongodb $lookup 进行排序和限制?
【发布时间】:2023-01-12 02:08:44
【问题描述】:

Items 集合,按类别划分,单个类别可以是 +100k 文档,范围很广。 订单集合,一个商品可以有多个订单,可以是卖单,也可以是买单。

对于每个项目,找到最低卖订单和最高出价命令 $sort 最低卖单和 $limit 结果到前 20 个(因此可以进行分页)。

为此,我通过 $lookup 和聚合用法尝试了很多方法,但我被迫获取每个项目的最低卖单以便能够对它们进行排序并将最终结果限制在前 20 个,从而响应时间很长,因为这个$lookup正在被应用每一个匹配结果而不是只是前20个。

如果没有完整的类别 $lookup,这种模式如何可行?

我想不出一种不对所有结果应用过滤器的方法,以便稍后对结果进行排序并将结果限制为 20 个。

我用的是最新的猫鼬node.js 的版本

【问题讨论】:

    标签: node.js mongodb mongoose aggregation-framework


    【解决方案1】:

    这是我使用 $limit & $sort 的示例查询

    db.userModel.aggregate([{
            "$match": {
              "isActive": true
            }
          },
          {
            "$sort": {
              "createdAt": 1
            }
          },
          {
            "$limit": 20
          }
        ])

    如果您遇到任何问题。请告诉我

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      • 2018-03-13
      • 2015-05-04
      • 2012-05-09
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多