簡體   English   中英

mongodb 按組排序

[英]mongodb sort on aggregate with group

我可以使用$groupaggregatesCollection獲取一組distinctDocuments

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

這很好用。 但是如何按字母降序對foos數組進行排序? 我知道如何獨立執行此操作,但不知道如何將其插入管道。 我嘗試在前后插入它,但無濟於事。 有任何想法嗎?

.sort()鏈接到.await()可以工作,但我想從查詢本身執行此操作。 謝謝!

您可以使用以下管道來做到這一點:

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

但是我認為如果您只是對數據進行分組和排序(而不在查詢中構建數組)會好得多。 試試這個管道:

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

然后在代碼中使用結果數組。

注意:還要注意,MongoDB 有distinct方法,但您必須在 js 代碼中對結果進行排序。

Orders.aggregate(
  [
    {
      $group: {
        _id: { $dateToString: { format: "%Y-%m-%d", date: "$createdAt" } },
        "order": {
          "$sum": 1
      },
      
        total: {
          $sum: "$total_price"
        },
      
      },
    },
    {
      $sort: { "_id": -1 }
  }
  ],
  function(err, result) {
    if (err) {
      res.send(err);
    } else {
      res.json(result);
    }
  }
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM