MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Carte MongoDB()

Dans MongoDB, le cursor.map() La méthode applique une fonction à chaque document visité par le curseur et combine les valeurs de retour dans un tableau.

Syntaxe

La syntaxe ressemble à ceci :

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

collection est le nom de la collection dans laquelle résident les documents.

Et où <function> est la fonction à appliquer à chaque document visité par le curseur.

Exemple

Supposons que nous ayons une collection appelée products qui contient les trois documents suivants :

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

Nous pouvons utiliser le map() méthode en conjonction avec find() méthode pour parcourir ces documents, tout en appliquant une fonction à chaque document.

Exemple :

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

Résultat :

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

Dans ce cas, nous avons parcouru le curseur et remplacé les instances de la chaîne Left avec Right . Nous avons ensuite renvoyé le résultat.

Le résultat est renvoyé sous forme de tableau.

Erreur ?

Si vous obtenez une erreur, comme celle-ci :

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

Assurez-vous que vous utilisez find() et non findOne() .

Le findOne() La méthode renvoie le document réel et non un curseur. Par conséquent, map() ne fonctionnera pas avec findOne() . De plus, même si cela fonctionnait, findOne() ne renvoie qu'un seul document et, par conséquent, il n'est pas nécessaire de parcourir plusieurs documents.