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

Mappa MongoDB()

In MongoDB, il cursor.map() applica una funzione a ogni documento visitato dal cursore e combina i valori restituiti in un array.

Sintassi

La sintassi è questa:

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

Dove collection è il nome della collezione in cui risiedono i documenti.

E dove <function> è la funzione da applicare ad ogni documento visitato dal cursore.

Esempio

Supponiamo di avere una collezione chiamata products che contiene i seguenti tre documenti:

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

Possiamo usare map() metodo insieme a find() metodo per scorrere quei documenti, applicando una funzione a ciascun documento.

Esempio:

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

Risultato:

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

In questo caso, abbiamo ripetuto il cursore e abbiamo sostituito le istanze della stringa Left con Right . Abbiamo quindi restituito il risultato.

Il risultato viene restituito come una matrice.

Errore?

Se ricevi un errore, come questo:

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

Assicurati di utilizzare find() e non findOne() .

Il findOne() il metodo restituisce il documento effettivo e non un cursore. Pertanto, map() non funzionerà con findOne() . Inoltre, anche se ha funzionato, findOne() restituisce solo un singolo documento e, pertanto, non sarebbe necessario scorrere più documenti.