Я пытаюсь себя научиться MongoDB с большим MongoDB (Каждый документ составляет около 10Mb в общей сложности 1000 документов)MongoDB Совокупный на огромных документах
Я хотел попробовать некоторые основы. Например, перечисляйте все действия, которые выполняются над всеми пользователями, сортирующими его с помощью UseCallories.
db.getCollection('users').aggregate([
{$group: {_id:"$Activities"}},
{$sort: { UsedCallories: -1}}
],{allowDiskUse:true});
Unfortunatly, когда я исполняю этот сценарий дает мне: "Скрипт выполнен успешно, но нет никаких результатов, чтобы показать.?
Не могли бы вы дать мне указатель, где я ошибаюсь?
Укороченный пример файла:
{
"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
}
}
]
}
]
}
Update «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": [
...
]
}
]
Update после Дубликат Вопрос
Ладно спасибо за ссылки на дубликате пост. Это не тот же вопрос.
Мне удалось использовать некоторые из них, чтобы получить некоторые результаты. Запрос изменен:
db.getCollection('users').aggregate([
{$unwind: '$Activities'},
{$sort: {'Activities.UsedCallories': -1}},
{$group: {_id: '$_id', 'Activities': {$push: '$Activities'}}}
], {
allowDiskUse:true
})
Wich теперь возвращает все действия, сгруппированных ПОЛЬЗОВАТЕЛЕМ, и я предпочел бы просто список всех этих видов деятельности, не сгруппированных Пользователем
try {$ unwind: "$ Activities"} шаг в пути перед группировкой. – Veeram
@Veeram Я попробовал, и он по-прежнему дает то же сообщение. 'db.getCollection ('пользователей') совокупный ([ {$ размотки: "$ деятельность"}., {$ группы: {_ID: "$ деятельность"}}, {$ сортировать: {UsedCallories: -1}}], { allowDiskUse: true }) ' – Kieken72
Можете ли вы добавить ожидаемый результат? – Veeram