sql >> Database >  >> NoSQL >> MongoDB

MongoDB voor elk()

In MongoDB, de cursor.forEach() methode herhaalt de cursor om een ​​JavaScript function toe te passen naar elk document vanaf de cursor.

Syntaxis

De syntaxis gaat als volgt:

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

Waar collection is de naam van de collectie waarin de documenten zich bevinden.

De <function> handtekening bevat een enkel argument dat wordt doorgegeven aan het huidige document om te verwerken.

Voorbeeld

Stel dat we een verzameling hebben met de naam products die de volgende drie documenten bevat:

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

We kunnen de forEach() . gebruiken methode in combinatie met de find() methode om door die documenten te bladeren, terwijl een JavaScript-functie op elk document wordt toegepast.

Voorbeeld:

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

Resultaat:

Right Handed Screwdriver
Right Blinker
Long Weight

Fout?

Als u een foutmelding krijgt, zoals deze:

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

Zorg ervoor dat u find() . gebruikt en niet findOne() .

De findOne() methode retourneert het eigenlijke document en niet een cursor. Daarom, forEach() werkt niet met findOne() . En zelfs als het wel zou werken, findOne() retourneert slechts één document en daarom is het niet nodig om door meerdere documenten te bladeren.


  1. HDFS NameNode High Availability in Hadoop

  2. Aangepaste foutmeldingen met Mongoose

  3. Redis - Verlopen indexen worden niet verwijderd

  4. Kan geen Jedis-verbinding krijgen; Kan een bron niet uit de pool halen