sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB forEach()

I MongoDB, cursor.forEach() metoden itererar markören för att tillämpa en funktion JavaScript till varje dokument från markören.

Syntax

Syntaxen ser ut så här:

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

Där samling är namnet på samlingen som handlingarna finns i.

<-funktionen> signaturen innehåller ett enda argument som skickas till det aktuella dokumentet som ska behandlas.

Exempel

Anta att vi har en samling som heter produkter som innehåller följande tre dokument:

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

Vi kan använda forEach() metod i kombination med find() metod för att iterera genom dessa dokument, samtidigt som en JavaScript-funktion tillämpas på varje dokument.

Exempel:

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

Resultat:

Right Handed Screwdriver
Right Blinker
Long Weight

Fel?

Om du får ett felmeddelande, så här:

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

Se till att du använder find() och inte findOne() .

findOne() metod returnerar det faktiska dokumentet och inte en markör. Därför forEach() fungerar inte med findOne() . Även om det fungerade, findOne() returnerar bara ett enda dokument, och därför skulle det inte finnas något behov av att upprepa flera dokument.


  1. Lagra en MessagePacked-hash i Redis

  2. Hur man returnerar JSON-data från php MongoCursor

  3. Nästa stopp – Bygga en datapipeline från Edge till Insight

  4. MongoDB jsonSchema validering ytterligare egenskaper