Wie verschachtelte Objekte abfragen?
Ich habe ein problem beim Abfragen von mongoDB mit verschachtelten Objekten notation:
db.messages.find( { headers : { From: "[email protected]" } } ).count()
0
db.messages.find( { 'headers.From': "[email protected]" } ).count()
5
Ich kann nicht sehen, was ich falsch mache. Ich erwarte verschachtelte Objekt-notation, um dasselbe Ergebnis zurück, als die dot-notation Abfrage. Wo bin ich falsch?
InformationsquelleAutor der Frage Edmondo1984 | 2013-04-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
db.messages.find( { headers : { From: "[email protected]" } } )
Diese Abfragen für Dokumente, wo
headers
gleich{ From: ... }
d.h. enthält keine weiteren Felder.db.messages.find( { 'headers.From': "[email protected]" } )
Dieser sieht nur die
headers.From
Feld, nicht unabhängig von anderen Feldern aus, oder fehlt,headers
.Dot-notation docs
InformationsquelleAutor der Antwort shx2
Den beiden Abfrage-Mechanismus auf unterschiedliche Weise arbeiten, wie vorgeschlagen, in die docs im Abschnitt Filialdokumente:
Wenn das Feld enthält ein eingebettetes Dokument (ich.e, Filialdokument), können Sie entweder geben Sie die gesamte Filialdokument als Wert für ein Feld, oder "reach-in" die Filialdokument über die Punkt-notation, geben Sie die Werte für die einzelnen Felder in der Filialdokument:
Gleichheit entspricht in Filialdokumente wählen Sie Dokumente, wenn das Filialdokument entspricht genau der angegebenen Filialdokument, einschließlich der Halbbild-Reihenfolge.
Im folgenden Beispiel wird die Abfrage findet alle Dokumente, in denen der Wert des Feldes Produzent ist ein Filialdokument, das enthält nur das Feld
company
mit dem Wert'ABC123'
und das Feldaddress
mit dem Wert'123 Street'
in der exakten Reihenfolge:InformationsquelleAutor der Antwort Edmondo1984