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

MongoDB kort()

I MongoDB er cursor.map() metoden anvender en funktion på hvert dokument, der besøges af markøren og kombinerer returværdierne i en matrix.

Syntaks

Syntaksen ser sådan ud:

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

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

Og hvor er den funktion, der skal anvendes på hvert dokument, der besøges af markøren.

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 map() metode i forbindelse med find() metode til at iterere gennem disse dokumenter, mens du anvender en funktion på hvert dokument.

Eksempel:

db.products.find().map(
  function(p) {
    p = p.product.replace("Left","Right");
    return p;
  }
);

Resultat:

[ "Right Handed Screwdriver", "Right Blinker", "Long Weight" ]

I dette tilfælde itererede vi gennem markøren og erstattede forekomster af strengen Left med Højre . Så returnerede vi resultatet.

Resultatet returneres som et array.

Fejl?

Hvis du får en fejl, som denne:

uncaught exception: TypeError: db.products.findOne(...).map 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 map() 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. Sådan installeres og konfigureres MongoDB på Ubuntu

  2. Kan strenge JSON $dates bruges i en MongoDB-forespørgsel?

  3. MongoDB $toObjectId

  4. Redis sub/pub og php/nodejs