Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Mongo:分组、推送和排序_Node.js_Mongodb_Aggregation Framework - Fatal编程技术网

Node.js Mongo:分组、推送和排序

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

我有一个mongodb收集数据,如下所示;我想按EmployeedID(即0001)分组,然后按年龄排序

我知道我可以用以下方法分组

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"}}}
])