Ich habe dieses Dokument in mongodb:MongoDB - Gruppe zusammengesetzten Schlüssel mit verschachtelten Feldern
{
"_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
}
]
}
]
}
]
}
]
}
Was ich suche
Ich möchte durch diese den „Wert“ Feld und Gruppe zusammenzufassen Felder:
- Typ
- eventname
- site
Also für das Dokument, das ich ich habe zu bekommen erwarten:
- Für die Kombination { "Party", "After-Party", "club8"} eine Summe von 40
- für die Kombination { "Party", "After-Party", "PostParty"} eine Summe von 90
Was ich versucht habe
Ich habe versucht, den Aggregat-Operator mit einem zusammengesetzten Schlüssel für die _id mit:
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' }
}
});
Die Ergebnisse
ein Dokument, mit 3-Arrays - einem für jeden Wert, den ich von gruppieren möge. Das Array "siteName" enthält die 2 Werte, die für "siteName" verfügbar sind. Die "Summe" scheint nichts zusammenzufassen, und sie erscheint nur einmal - ich erwartete, sie neben jedem "SiteName" -Wert im Dokument zu sehen.
{
"_id":{
"type":[
"Party"
],
"name":[
[
"After Party"
]
],
"siteName":[
[
[
"club8",
"PostParty"
]
]
]
},
"total":0
}
Am I „Aggregate“ in die falsche Art und Weise verwendet oder ist das Schema verwende ich nicht für mein Ziel passen? Danke.
Danke, das löst mein Problem! – assafm
@assafm Keine Sorge :-) Ich bin froh, Ihnen helfen zu können. – chridam