Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Mongodb 如何对聚合结果的每个文档中存在的文档数组进行排序?_Mongodb_Sorting_Aggregation Framework - Fatal编程技术网

Mongodb 如何对聚合结果的每个文档中存在的文档数组进行排序?

Mongodb 如何对聚合结果的每个文档中存在的文档数组进行排序?,mongodb,sorting,aggregation-framework,Mongodb,Sorting,Aggregation Framework,我有一个名为event的集合 我有一个聚合查询,如下所示 db.event.aggregate([ {“$group”:{ “_id”:{ “UserId”:“$TracInfo.UserId”, “SessionId”:“$TracInfo.SessionId” }, “EventName”:{“$push”:{ “名称”:“$Name”, “时间”:“$Timestamp” }} }}, {“$out”:“演示”} ]) 其产出如下: { “结果”:

我有一个名为
event
的集合

我有一个聚合查询,如下所示

db.event.aggregate([
{“$group”:{
“_id”:{
“UserId”:“$TracInfo.UserId”,
“SessionId”:“$TracInfo.SessionId”
},
“EventName”:{“$push”:{
“名称”:“$Name”,
“时间”:“$Timestamp”
}}
}},                    
{“$out”:“演示”}
])
其产出如下:

{
“结果”:[
{
“_id”:{
“用户ID”:“pawan”,
“会话ID”:“q69lIFHcpsCRgxtbJu1v”
},
“事件名称”:[
{
“名称”:“已删除房屋地图”,
“时间”:数字长(“1336090020090”)
},
{
“名称”:“屏幕停止”,
“时间”:数字长(“1336090020010”)
},
{
“名称”:“设置已更改”,
“时间”:数字长(“1336090020030”)
},
{
“名称”:“已删除房屋地图”,
“时间”:数字长(“1336090020100”)
},
{
“名称”:“屏幕已启动”,
“时间”:数字长(“1336090020330”)
},
...
},
...
]
}
我想按时间值对结果中每个文档的EventName数组进行排序

有什么办法吗

我试过了

{$sort:{“EventName.Time”:1}

但它不起作用。

在将时间戳推入数组之前对其进行排序。

在将时间戳推入数组之前对其进行排序。

在将时间戳推入数组之前对其进行排序。

首先确保时间戳上有索引,以避免性能受到影响

其次,使用此聚合:

db.event.aggregate([
                  { $sort: { Timestamp:1 } },
                  { $group:
                    { _id:{"UserId":"$TracInfo.UserId","SessionId":"$TracInfo.SessionId"},
                      EventName:{$push:{"Name":"$Name","Time":"$Timestamp"}}}},                   
                  {$out:"demo"}
                 ])

首先确保时间戳上有索引,以避免性能受到影响

其次,使用此聚合:

db.event.aggregate([
                  { $sort: { Timestamp:1 } },
                  { $group:
                    { _id:{"UserId":"$TracInfo.UserId","SessionId":"$TracInfo.SessionId"},
                      EventName:{$push:{"Name":"$Name","Time":"$Timestamp"}}}},                   
                  {$out:"demo"}
                 ])

首先确保时间戳上有索引,以避免性能受到影响

其次,使用此聚合:

db.event.aggregate([
                  { $sort: { Timestamp:1 } },
                  { $group:
                    { _id:{"UserId":"$TracInfo.UserId","SessionId":"$TracInfo.SessionId"},
                      EventName:{$push:{"Name":"$Name","Time":"$Timestamp"}}}},                   
                  {$out:"demo"}
                 ])

首先确保时间戳上有索引,以避免性能受到影响

其次,使用此聚合:

db.event.aggregate([
                  { $sort: { Timestamp:1 } },
                  { $group:
                    { _id:{"UserId":"$TracInfo.UserId","SessionId":"$TracInfo.SessionId"},
                      EventName:{$push:{"Name":"$Name","Time":"$Timestamp"}}}},                   
                  {$out:"demo"}
                 ])

在将其推入阵列之前对其进行排序在将其推入阵列之前对其进行排序在将其推入阵列之前对其进行排序在将其推入阵列之前对其进行排序