sql >> Databáze >  >> NoSQL >> MongoDB

mapa MongoDB()

V MongoDB, cursor.map() metoda aplikuje funkci na každý dokument navštívený kurzorem a kombinuje návratové hodnoty v poli.

Syntaxe

Syntaxe vypadá takto:

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

Kde collection je název sbírky, ve které se dokumenty nacházejí.

A kde <function> je funkce, která se použije na každý dokument navštívený kurzorem.

Příklad

Předpokládejme, že máme kolekci nazvanou products který obsahuje následující tři dokumenty:

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

Můžeme použít map() ve spojení s metodou find() metodu pro iteraci těchto dokumentů, přičemž na každý dokument aplikuje funkci.

Příklad:

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

Výsledek:

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

V tomto případě jsme iterovali kurzorem a nahradili instance řetězce Left s Right . Poté jsme vrátili výsledek.

Výsledek je vrácen jako pole.

Chyba?

Pokud se zobrazí chyba, jako je tato:

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

Ujistěte se, že používáte find() a ne findOne() .

findOne() metoda vrací skutečný dokument a ne kurzor. Proto map() nebude fungovat s findOne() . Také, i když to fungovalo, findOne() vrací pouze jeden dokument, a proto by nebylo nutné procházet více dokumenty.


  1. Mongo Query otázka $gt,$lt

  2. Agregátní rámec nemůže používat indexy

  3. MongoDB $ nebo Aggregation Pipeline Operator

  4. Jak se MongoDb instaluje pomocí Meteoru?