Wenn Sie Methoden wie find()
verwenden oder findOne()
In MongoDB erhalten Sie standardmäßig das gesamte Dokument zurück. Und wenn Sie Projektionen verwenden, können Sie bestimmte Schlüssel/Wert-Paare zurückgeben.
Aber was, wenn Sie nur den Wert wollen?
Sie können den Wert eines Felds extrahieren, indem Sie den Namen dieses Felds an Ihre Abfrage anhängen, wenn Sie findOne()
verwenden .
Beispiel
Angenommen, wir haben eine Sammlung namens products
mit folgenden Dokumenten:
{ "_id" :1, "product" :"Fledermaus", "sizes" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Hut" , „Größen“ :[ „S“, „L“, „XL“ ] }{ „_id“ :3, „Produkt“ :„Kappe“, „Größen“ :[ „M“, „L“ ] }Wenn wir das Produkt des ersten Dokuments zurückgeben wollten, könnten wir Folgendes tun:
db.products.findOne().product
Ergebnis:
FledermausBeachten Sie, dass wir
findOne()
verwendet haben Methode. Diese Technik funktioniert nicht beifind()
Methode. DasfindOne()
Methode gibt ein einzelnes Dokument zurück, wohingegen diefind()
Die Methode gibt lediglich einen Cursor an das Dokument zurück.Wenn wir das Array zurückgeben wollten, könnten wir Folgendes tun:
db.products.findOne().sizes
Ergebnis:
[ "S", "M", "L" ]Und wir können einen Array-Wert erhalten, indem wir auf seinen Index verweisen:
db.products.findOne().sizes[0]
Ergebnis:
SArrays sind nullbasiert, also
0
verweist auf das erste Element im Array,1
verweist auf das zweite Element,2
der dritte usw.Spezifisches Dokument
Standardmäßig ist
findOne()
-Methode gibt das erste Dokument in der Sammlung zurück. Wir können ein anderes Dokument auswählen, indem wir als erstes Argument eine Abfrage übergeben.Ich sage „erstes Argument“, weil
findOne()
akzeptiert auch eineprojection
Argument als optionales zweites Argument.db.products.findOne({_id: 2}, {sizes: 1, _id: 0}).sizes
Ergebnis:
[ "S", "L", "XL" ]
In diesem Fall habe ich ein Projektionsargument hinzugefügt, das jedoch keine Auswirkung auf das Ergebnis hatte. Aber es hätte einen Effekt gehabt, wenn ich einen Wert von 0 angegeben hätte. Das hätte dazu geführt, dass nichts zurückgegeben wurde.
Eingebettete Dokumente
Sie können die Punktnotation verwenden, um Werte aus eingebetteten Dokumenten zurückzugeben
Beispieldokument:
{ "_id" :1, "name" :"Wag", "details" :{ "type" :"Hund", "weight" :20 }}Wir könnten Folgendes tun, um einen Wert aus dem eingebetteten Dokument zurückzugeben:
db.pets.findOne().details.type
Ergebnis:
Hund