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>)
Où 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.