Ich versuche, meine Dokumente wie unten dargestellt zu transformieren. Ich habe versucht, mit dem $unwind
Operator, dann die $group
Operator kombiniert mit dem $push
Operator, um die $user_mentions
Array neu zu erstellen, aber dies schiebt auch alle leeren Arrays und ich bin wieder auf Platz eins wieder.Wie werden verschachtelte Arrays geglättet und leere Arrays nur dann entfernt, wenn sie mit dem MongoDB-Aggregationsframework verschachtelt sind?
Was fange ich mit:
{
_id: "6222407",
name: "Chris",
user_mentions: [
[],
[{_id:"963222", name: "Bob"}, {_id:"234324", name: "Fred"}]
]
},
{
_id: "34566",
name: "Tim",
user_mentions: [
[]
]
},
{
_id: "65343",
name: "Sean",
user_mentions: [
[],
[]
]
}
}
Was ich will:
{
_id: "6222407",
name: "Chris",
user_mentions: [
{_id:"963222", name: "Bob"},
{_id:"234324", name: "Fred"}]
]
},
{
_id: "34566",
name: "Tim",
user_mentions: [
]
},
{
_id: "65343",
name: "Sean",
user_mentions: [
]
}
Das sieht aus wie es ist, was ich will. :) Ich bekomme 3,2, um diese zweite Funktion von $ unwind zu testen. –
Für andere Leser: Sie benötigen MongoDB Version 3.2. Ich hatte Probleme, 3.2 auf Ubuntu 14.04 richtig laufen zu lassen, hatte aber glücklicherweise auch einen Windows-PC. –
Wenn Sie es auf einem 3.2 MongoDB vorhaben, können Sie eine Projektstufe mit einem $ cond hinzufügen, um ein leeres Array zu erstellen, wenn keines vorhanden ist. Bei Bedarf kann ich der Antwort ein Beispiel hinzufügen. – HoefMeistert