Geschachtelte Gruppierung mit MongoDB
Gegeben, eine Datenbank in form
[
{ gender: "m", age: 1, name: "A" },
{ gender: "f", age: 2, name: "B" },
{ gender: "m", age: 3, name: "C" },
{ gender: "f", age: 1, name: "D" },
{ gender: "m", age: 2, name: "E" },
{ gender: "f", age: 3, name: "F" },
{ gender: "m", age: 1, name: "G" },
{ gender: "f", age: 2, name: "H" },
{ gender: "m", age: 3, name: "I" },
{ gender: "f", age: 1, name: "J" }
]
Möchte ich mit der ersten Gruppe nach Alter und zweitens die Gruppe nach Geschlecht, so daß ich eine verschachtelte Ergebnis der Suche so etwas wie
[{
_id: "1",
children: [
{ _id: "f" },
{ _id: "m" }
]
}, {
_id: "2",
children: [
{ _id: "f" },
{ _id: "m" }
]
}, {
_id: "3",
children: [
{ _id: "f" },
{ _id: "m" }
]
}]
Hier ist, was ich bisher ausprobiert:
db.example.aggregate(
{ $group: { _id: "$age", children: { $addToSet: {
age: "$age", gender: "$gender", name: "$name"
}}}},
{ $group: { _id: "$children.gender"}}
)
Aber dies gibt einen {_id: null}
als Ergebnis. Ist dies möglich und falls ja, wie?
InformationsquelleAutor der Frage hielsnoppe | 2013-05-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas wie dies sollte es tun;
..., die das Ergebnis liefert;
Wenn Sie möchten, dass das Alter als
_id
wie in deinem Beispiel, ersetzen Sie einfach die zweite Gruppierung ist_id
durch;InformationsquelleAutor der Antwort Joachim Isaksson