sql >> Databáze >  >> NoSQL >> MongoDB

Jak vrátit jen hodnotu v MongoDB

Když používáte metody jako find() nebo findOne() v MongoDB se ve výchozím nastavení vrátí celý dokument. A pokud používáte projekce, můžete vrátit konkrétní páry klíč/hodnota.

Ale co když chcete pouze hodnotu?

Hodnotu pole můžete extrahovat připojením názvu tohoto pole k dotazu při použití findOne() .

Příklad

Předpokládejme, že máme kolekci nazvanou products s následujícími dokumenty:

{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Klobouk" , "velikosti" :[ "S", "L", "XL" ] }{ "_id" :3, "produkt" :"Kšiltovka", "velikosti" :[ "M", "L" ] } 

Pokud bychom chtěli vrátit produkt prvního dokumentu, mohli bychom udělat následující:

db.products.findOne().product 

Výsledek:

Netopýr

Všimněte si, že jsme použili findOne() metoda. Tato technika nefunguje na find() metoda. findOne() metoda vrací jeden dokument, zatímco find() metoda pouze vrátí kurzor do dokumentu.

Pokud bychom chtěli vrátit pole, mohli bychom udělat toto:

db.products.findOne().sizes 

Výsledek:

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

A můžeme získat hodnotu pole odkazem na jeho index:

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

Výsledek:

S

Pole jsou založeny na nule, a tedy 0 odkazuje na první prvek v poli, 1 odkazuje na druhý prvek, 2 třetí a tak dále.

Konkrétní dokument

Ve výchozím nastavení findOne() metoda vrací první dokument v kolekci. Můžeme vybrat jiný dokument zadáním předání dotazu jako prvního argumentu.

Říkám „první argument“, protože findOne() také přijímá projection argument jako volitelný druhý argument.

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

Výsledek:

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

V tomto případě jsem přidal argument projekce, ale na výsledek to nemělo žádný vliv. Ale mělo by to vliv, kdybych zadal hodnotu 0. To by vedlo k tomu, že by se nic nevrátilo.

Vložené dokumenty

K vrácení hodnot z vložených dokumentů můžete použít tečkovou notaci

Příklad dokumentu:

{ "_id" :1, "name" :"Wag", "detaily" :{ "type" :"Pes", "weight" :20 }}

Pro vrácení hodnoty z vloženého dokumentu můžeme provést následující:

db.pets.findOne().details.type 

Výsledek:

Pes


  1. Multi-sbírka, multi-dokumentové 'transakce' v MongoDB

  2. Jak provést Persistence Store v Redis?

  3. MongoDB – Přineste si vlastní SSL certifikáty

  4. MongoDB:Co je sdružování připojení a časový limit?