Finden Sie in Doppelt Verschachtelten Array MongoDB
Habe ich diese Sammlung in mongodb
{
"_id" : "777",
"someKey" : "someValue",
"someArray" : [
{
"name" : "name1",
"someNestedArray" : [
{
"name" : "value"
},
{
"name" : "delete me"
}
]
}
]
}
Will ich finden-Dokument basierend auf someArray.someNestedArray.name
aber ich finde keine nützlichen link alle Suche Ergebnis zu update verschachteltes array
ich versuche dies aber nichts zurück
db.mycollection.find({"someArray.$.someNestedArray":{"$elemMatch":{"name":"1"}}})
db.mycollection.find({"someArray.$.someNestedArray.$.name":"1"})
und Einige Sache sonst
wie ich finde, durch das element in der doppelt geschachtelten array mongodb?
InformationsquelleAutor user298582 | 2015-03-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im einfachsten Sinne dieser folgt gerade die grundlegende form der "dot-notation" wie MongoDB. Das funktioniert unabhängig davon, welches Arraymitglied die innere array-Mitglied ist, solange es passt den Wert:
Dass ist in Ordnung für ein "einzelnes Feld" Wert, für den Abgleich mit mehreren Felder, die Sie verwenden würden,
$elemMatch
:Entspricht das Dokument, das enthalten würde, was mit einem Feld an, dass "Pfad" entsprechen den Wert. Wenn Sie bestimmt sind zu "Spiel-und filter -" das Ergebnis also nur das passende element zurückgegeben wurde, dies ist nicht möglich, mit dem positionalen operator Projektion, wie zitiert:
Moderne MongoDB
Können wir tun dies, indem
$filter
und$anzeigen
hier. Die$map
ist unbedingt notwendig, da die "innere" array ändern kann, als ein Ergebnis von "filtern", und der "äußere" array natürlich nicht mit den Bedingungen, wenn das "innere" wurde gestrippt aller Elemente.Wieder nach dem Beispiel tatsächlich mit mehreren Eigenschaften entsprechen, die innerhalb jedes array:
Daher auf die "äußere" array der
$filter
sieht eigentlich am$size
der "inneren" array nach war es "gefiltert" selbst, so können Sie ablehnen, die Ergebnisse, wenn die ganze innere array in der Tat zu entsprechen, erwähnt zu werden.Ältere MongoDB
Um "Projekt" nur das passende element, müssen Sie die
.Summe()
Methode:Können Sie auf "filter" die Spiele in verschachtelten arrays, die für eine oder mehrere Ergebnisse innerhalb des Dokuments.
$elemMatch
diese Zeile verdeutlicht mir die genaue Verwendung deselemMatch
,InformationsquelleAutor Neil Lunn