sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan returnerer du kun værdien i MongoDB

Når du bruger metoder såsom find() eller findOne() i MongoDB får du som standard hele dokumentet retur. Og hvis du bruger projektioner, kan du returnere specifikke nøgle/værdi-par.

Men hvad hvis du kun vil have værdien?

Du kan udtrække værdien af ​​et felt ved at tilføje det felts navn til din forespørgsel, når du bruger findOne() .

Eksempel

Antag, at vi har en samling kaldet products med følgende dokumenter:

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

Hvis vi ville returnere det første dokuments produkt, kunne vi gøre følgende:

db.products.findOne().product 

Resultat:

Flagermus

Bemærk, at vi brugte findOne() metode. Denne teknik virker ikke på find() metode. findOne() metoden returnerer et enkelt dokument, hvorimod find() metoden returnerer blot en markør til dokumentet.

Hvis vi ville returnere arrayet, kunne vi gøre dette:

db.products.findOne().sizes 

Resultat:

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

Og vi kan få en matrixværdi ved at referere til dens indeks:

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

Resultat:

S

Arrays er nul-baserede, og derfor 0 refererer til det første element i arrayet, 1 refererer til det andet element, 2 den tredje, og så videre.

Specifikt dokument

Som standard er findOne() metoden returnerer det første dokument i samlingen. Vi kan vælge et andet dokument ved at angive at sende en forespørgsel som det første argument.

Jeg siger "første argument", fordi findOne() accepterer også en projection argument som et valgfrit andet argument.

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

Resultat:

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

I dette tilfælde tilføjede jeg et projektionsargument, men det havde ingen effekt på resultatet. Men det ville have haft en effekt, hvis jeg havde angivet en værdi på 0. Det ville have resulteret i, at intet blev returneret.

Indlejrede dokumenter

Du kan bruge punktnotation til at returnere værdier fra indlejrede dokumenter

Eksempel på dokument:

{ "_id" :1, "name" :"Wag", "details" :{ "type" :"Hund", "vægt" :20 }}

Vi kunne gøre følgende for at returnere en værdi fra det indlejrede dokument:

db.pets.findOne().details.type 

Resultat:

Hund


  1. Sådan opretter du forbindelse til ElastiCache-klyngen ved hjælp af node.js

  2. Hånende database i node.js?

  3. Få adgang til MongoDB direkte via JavaScript

  4. Fjern et felt fra alle elementer i array i mongodb