У меня есть этот документ в MongoDB:MongoDB - группа составной ключ с вложенными полями
{
"_id":"26/04/2015 09:50",
"reservations":130,
"Event_types":[
{
"type":"Party",
"events":[
{
"eventName":"After Party",
"total_count":130,
"by":[
{
"siteName":"club8",
"countArray":[
{
"bucket":"default",
"value":40
}
]
},
{
"siteName":"PostParty",
"countArray":[
{
"bucket":"1",
"value":70
},
{
"bucket":"2",
"value":20
}
]
}
]
}
]
}
]
}
Что я ищу
Я хочу подвести поле «значение» и группу по этим поля:
- типа
- именем_события
- Имя_узла
Таким образом, для документа, у меня есть, я бы ожидать, чтобы получить:
- Для комбинации { "партии", "After Party", "club8"} а сумма 40
- Для комбинации { "партии", "After Party", "PostParty"} сумма 90
То, что я пытался
Я попытался с помощью совокупного оператора с составным ключом для _id:
db.testing.aggregate(
{
$group : {
_id :
{
type:'$Event_types.type',
name: '$Event_types.events.eventName',
siteName: '$Event_types.events.by.siteName'
}
, total : { $sum : '$Event_types.events.by.countArray.value' }
}
});
Результаты
один документ, с 3-х массивов - по одному для каждого значения я хочу группе. Массив «siteName» содержит 2 значения, доступные для «siteName». «Сумма», кажется, ничего не суммирует, и она появляется только один раз - я ожидал увидеть ее рядом с каждым значением «SiteName» в документе.
{
"_id":{
"type":[
"Party"
],
"name":[
[
"After Party"
]
],
"siteName":[
[
[
"club8",
"PostParty"
]
]
]
},
"total":0
}
я использую «заполнитель» неправильный путь или схема я использую не подходит для моей цели? Спасибо.
Спасибо, это решает мою проблему! – assafm
@assafm Не стоит беспокоиться :-) Рад помочь. – chridam