MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak zwrócić tylko wartość w MongoDB?

Kiedy używasz metod takich jak find() lub findOne() w MongoDB domyślnie zwracany jest cały dokument. A jeśli używasz prognoz, możesz zwrócić określone pary klucz/wartość.

Ale co, jeśli chcesz tylko wartości?

Możesz wyodrębnić wartość pola, dołączając nazwę tego pola do zapytania podczas używania findOne() .

Przykład

Załóżmy, że mamy kolekcję o nazwie products z następującymi dokumentami:

{ "_id" : 1, "product" : "Bat", "sizes" : [ "S", "M", "L" ] }
{ "_id" : 2, "product" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "product" : "Cap", "sizes" : [ "M", "L" ] }

Gdybyśmy chcieli zwrócić produkt z pierwszego dokumentu, moglibyśmy wykonać następujące czynności:

db.products.findOne().product

Wynik:

Bat

Zauważ, że użyliśmy findOne() metoda. Ta technika nie działa na find() metoda. findOne() metoda zwraca pojedynczy dokument, podczas gdy find() metoda jedynie zwraca kursor do dokumentu.

Gdybyśmy chcieli zwrócić tablicę, moglibyśmy to zrobić:

db.products.findOne().sizes

Wynik:

[ "S", "M", "L" ]

I możemy uzyskać wartość tablicy, odwołując się do jej indeksu:

db.products.findOne().sizes[0]

Wynik:

S

Tablice są liczone od zera, więc 0 odwołuje się do pierwszego elementu tablicy, 1 odwołuje się do drugiego elementu, 2 trzeci i tak dalej.

Konkretny dokument

Domyślnie findOne() Metoda zwraca pierwszy dokument w kolekcji. Możemy wybrać inny dokument, określając przekazanie zapytania jako pierwszego argumentu.

Mówię „pierwszy argument”, ponieważ findOne() akceptuje również projection argument jako opcjonalny drugi argument.

db.products.findOne({_id: 2}, {sizes: 1, _id: 0}).sizes

Wynik:

[ "S", "L", "XL" ]

W tym przypadku dodałem argument projekcji, ale nie miało to wpływu na wynik. Ale miałoby to efekt, gdybym określił wartość 0. To by nie spowodowało zwrócenia niczego.

Osadzone dokumenty

Możesz użyć notacji kropkowej, aby zwrócić wartości z osadzonych dokumentów

Przykładowy dokument:

{
	"_id" : 1,
	"name" : "Wag",
	"details" : {
		"type" : "Dog",
		"weight" : 20
	}
}

Aby zwrócić wartość z osadzonego dokumentu, moglibyśmy wykonać następujące czynności:

db.pets.findOne().details.type

Wynik:

Dog


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zrozumienie Meteor Publish / Subskrybuj

  2. Bitwa o bazy danych NoSQL — porównanie MongoDB i Oracle NoSQL

  3. Parametry połączenia w MongoDB (z przykładami)

  4. Nie udało się uruchomić mongod.service:Nie znaleziono jednostki mongod.service

  5. Zapytanie Node mongoose find w pętli nie działa