Node.js 使用组对聚合进行mongodb排序
我可以通过使用Node.js 使用组对聚合进行mongodb排序,node.js,mongodb,mongoose,meteor,Node.js,Mongodb,Mongoose,Meteor,我可以通过使用$group和聚合为集合获取一组不同的文档 let uniqueFoos= Collection.rawCollection().aggregate([ { $group: { _id: 0, foos: { $addToSet: '$foo' } } } ]).toArray().await(); 这很有效。但是如何按字母降序排列foos数组呢?我知道如何独立完成这项
$group
和聚合
为集合
获取一组不同的文档
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 }
}
]
但我认为,如果只对数据进行分组和排序(而不在查询中构建数组),效果会更好。尝试以下管道:
[
{
$group: {
_id: "$foo",
}
},
{
$sort: { "_id": -1 }
},
{
$group: {
_id: 0,
foos: {
$push: '$_id'
}
}
}
]
[
{
$group: {
_id: "$profile.name",
}
},
{
$sort: { "_id": -1 }
}
]
然后在代码中使用结果数组
注意:还要注意,MongoDB有方法,但您必须在js代码中对结果进行排序。这有助于: