[英]mongodb sort on aggregate with group
我可以使用$group
和aggregates
為Collection
獲取一組distinct
的Documents
。
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.