我试图自我学习与大的MongoDB MongoDB中(每个文档约为10Mb的共1000个文档)MongoDB的总结上巨大的文件
我想尝试一些基础知识。例如列出所有用户对UsedCallories进行排序的每个Activity。
db.getCollection('users').aggregate([
{$group: {_id:"$Activities"}},
{$sort: { UsedCallories: -1}}
],{allowDiskUse:true});
不幸的是,当我执行这个脚本它给了我:“脚本成功执行,但目前还没有结果显示。”?
你能给我一个指针,我错了吗?
缩短示例文件:
{
"Id": 1,
"FirstName": "Casie",
"LastName": "Crapo",
"Email": "[email protected]",
"Weight": 92,
"Length": 198,
"Activities": [
{
"ActivityType": {
"Name": "Sexual Activity",
"CallPerSecond": 0.033333333
},
"StartCoordinates": {
"Lattidude": -10.81907,
"Longitude": -16.16832
},
"EndCoordinates": {
"Lattidude": -10.81907,
"Longitude": -16.16832
},
"StartDateTime": { $date: "2016-11-01T23:39:15Z" },
"EndDateTime": { $date: "2016-11-02T02:38:45Z" },
"UsedCallories": 772.63042705630426,
"Measurements": [
{
"Heartrate": 142,
"UnderPressure": 123,
"Overressure": 156,
"Speed": 0,
"Coordinates": {
"Lattidude": -10.81907,
"Longitude": -16.16832
}
}
]
}
]
}
更新“ExpectedOutput”:
所以预期输出仅仅是一个从用户的所有阵列领域所有活动的列表。排序在UsedCallories上。之后重复的问题
好感谢的参考副本后
"Activities": [
{
"ActivityType": {
"Name": "Sexual Activity",
"CallPerSecond": 0.033333333
},
"StartCoordinates": {
"Lattidude": -10.81907,
"Longitude": -16.16832
},
"EndCoordinates": {
"Lattidude": -10.81907,
"Longitude": -16.16832
},
"StartDateTime": { $date: "2016-11-01T23:39:15Z" },
"EndDateTime": { $date: "2016-11-02T02:38:45Z" },
"UsedCallories": 772.63042705630426,
"Measurements": [
...
]
},{
"ActivityType": {
"Name": "Sexual Activity",
"CallPerSecond": 0.033333333
},
"StartCoordinates": {
"Lattidude": -10.81907,
"Longitude": -16.16832
},
"EndCoordinates": {
"Lattidude": -10.81907,
"Longitude": -16.16832
},
"StartDateTime": { $date: "2016-11-01T23:39:15Z" },
"EndDateTime": { $date: "2016-11-02T02:38:45Z" },
"UsedCallories": 52.63042705630426,
"Measurements": [
...
]
},{
"ActivityType": {
"Name": "Sexual Activity",
"CallPerSecond": 0.033333333
},
"StartCoordinates": {
"Lattidude": -10.81907,
"Longitude": -16.16832
},
"EndCoordinates": {
"Lattidude": -10.81907,
"Longitude": -16.16832
},
"StartDateTime": { $date: "2016-11-01T23:39:15Z" },
"EndDateTime": { $date: "2016-11-02T02:38:45Z" },
"UsedCallories": 20.22442,
"Measurements": [
...
]
}
]
更新。但这不是同一个问题。
我设法使用它来获得一些结果。 查询改为:
db.getCollection('users').aggregate([
{$unwind: '$Activities'},
{$sort: {'Activities.UsedCallories': -1}},
{$group: {_id: '$_id', 'Activities': {$push: '$Activities'}}}
], {
allowDiskUse:true
})
至极现在返回所有分组方式,用户的活动,我宁愿只是一个所有不被用户
尝试{$ unwind:“$ Activities”}在分组之前进入管道。 – Veeram
@Veeram我试过了,它仍然给出相同的信息。 'db.getCollection( '用户')合计([ {$开卷: “$活动”},{ $组:{_id: “$活动”}},{ $排序:{UsedCallories: -1}}],{ allowDiskUse:true })' – Kieken72
您能添加预期的输出吗? – Veeram