Node.js Mongo:分组、推送和排序
我有一个mongodb收集数据,如下所示;我想按EmployeedID(即0001)分组,然后按年龄排序 我知道我可以用以下方法分组Node.js Mongo:分组、推送和排序,node.js,mongodb,aggregation-framework,Node.js,Mongodb,Aggregation Framework,我有一个mongodb收集数据,如下所示;我想按EmployeedID(即0001)分组,然后按年龄排序 我知道我可以用以下方法分组 collection.aggregate([ {$match:{"EmployeeId":0001}}, {$group:{"_id":"$EmployeeID", "speciality":{$push:"$Speciality"}, "Code":{$push:"$Code"}, "Age":{$push:"$A
collection.aggregate([
{$match:{"EmployeeId":0001}},
{$group:{"_id":"$EmployeeID",
"speciality":{$push:"$Speciality"},
"Code":{$push:"$Code"},
"Age":{$push:"$Age"}}}
])
但是我如何在这里使用$sort?因此,我的结果可以是如下所示:
[{ "EmployeeID" : "0001",
"speciality" : [ "zzz","xxx"],
"Code" :[ "P","P"],
"Age" : [5,8]
}]
您可以在分组阶段之前对文档进行排序:
collection.aggregate([
{$sort: {_id: -1}},
{$match:{"EmployeeId":0001}},
{$group:{"_id":"$EmployeeID",
"speciality":{$push:"$Speciality"},
"Code":{$push:"$Code"},
"Age":{$push:"$Age"}}}
])
在处理大型集合时,分组前的排序可能会超过mongo的内存。幸运的是,您可以将allowDiskUse设置为true,以允许mongo编写临时文件 \u id只是一个例子。。您可以按年龄排序
{$sort:{Age:1}},
collection.aggregate([
{$sort: {_id: -1}},
{$match:{"EmployeeId":0001}},
{$group:{"_id":"$EmployeeID",
"speciality":{$push:"$Speciality"},
"Code":{$push:"$Code"},
"Age":{$push:"$Age"}}}
])