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

MongoDB forEach()

I MongoDB er cursor.forEach() metoden gentager markøren for at anvende en JavaScript funktion til hvert dokument fra markøren.

Syntaks

Syntaksen ser sådan ud:

db.collection.find().forEach(<function>)

Hvor samling er navnet på den samling, som dokumenterne ligger i.

<-funktionen> signaturen indeholder et enkelt argument, der videregives til det aktuelle dokument, der skal behandles.

Eksempel

Antag, at vi har en samling kaldet produkter der indeholder følgende tre dokumenter:

{ "_id" : 1, "product" : "Left Handed Screwdriver" }
{ "_id" : 2, "product" : "Left Blinker" }
{ "_id" : 3, "product" : "Long Weight" }

Vi kan bruge forEach() metode i forbindelse med find() metode til at gentage disse dokumenter, mens du anvender en JavaScript-funktion til hvert dokument.

Eksempel:

db.products.find().forEach(
  function(p) {
    print(
      p.product.replace("Left","Right")
      );
  }
);

Resultat:

Right Handed Screwdriver
Right Blinker
Long Weight

Fejl?

Hvis du får en fejl, som denne:

uncaught exception: TypeError: db.products.findOne(...).forEach is not a function :
@(shell):1:1

Sørg for, at du bruger find() og ikke findOne() .

findOne() metoden returnerer det faktiske dokument og ikke en markør. Derfor forEach() virker ikke med findOne() . Også selvom det virkede, findOne() returnerer kun et enkelt dokument, og derfor ville der ikke være behov for at gentage flere dokumenter.


  1. Er der nogen måde at arbejde med sessioner uden at låse på ASP.Net MVC-webstedet?

  2. Opretter forbindelse til RedisToGo gennem Node.JS

  3. Bedste Redis-bibliotek til Java

  4. Redis pubsub beskedkø, men med tilbagekald, som i ZeroMQ