【问题标题】:mongodb sort on aggregate with groupmongodb排序与组聚合
【发布时间】:2021-01-15 07:42:48
【问题描述】:

我可以通过使用$groupaggregates 获得DocumentsDocumentsCollection

let uniqueFoos= Collection.rawCollection().aggregate([
    {
      $group: {
        _id: 0,
        foos: {
          $addToSet: '$foo'
        }
      }
    }
  ]).toArray().await();

这很好用。但是如何按字母降序对foos 数组进行排序?我知道如何独立执行此操作,但不知道如何将其插入管道。我尝试在前后插入它,但无济于事。有什么想法吗?

.sort() 链接到.await() 可以工作,但我想从查询本身执行此操作。谢谢!

【问题讨论】:

标签: node.js mongodb mongoose meteor


【解决方案1】:

您可以使用以下管道:

[
    {
        $group: {
            _id: "$foo",
        }
    },
    {
        $sort: { "_id": -1 }
    },
    {
        $group: {
            _id: 0,
            foos: {
              $push: '$_id'
            }
        }
    }
]

但我认为,如果您只是对数据进行分组和排序(而不在查询中构建数组),那会好得多。试试这个管道:

[
    {
        $group: {
            _id: "$profile.name",
        }
    },
    {
        $sort: { "_id": -1 }
    }
]

然后在代码中使用结果数组。

注意:另外请注意,MongoDB 有 distinct 方法,但您必须在 js 代码中对结果进行排序。

【讨论】:

    猜你喜欢
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多