MongoDBでは、cursor.map() メソッドは、カーソルがアクセスした各ドキュメントに関数を適用し、戻り値を配列に結合します。
構文
構文は次のようになります:
db.collection.find().map(<function>)
collection ドキュメントが存在するコレクションの名前です。
そして、ここで<function> カーソルがアクセスした各ドキュメントに適用する機能です。
例
productsというコレクションがあるとします。 次の3つのドキュメントが含まれています:
{ "_id" : 1, "product" : "Left Handed Screwdriver" }
{ "_id" : 2, "product" : "Left Blinker" }
{ "_id" : 3, "product" : "Long Weight" }
map()を使用できます find()と組み合わせたメソッド 各ドキュメントに関数を適用しながら、それらのドキュメントを反復処理する方法。
例:
db.products.find().map(
function(p) {
p = p.product.replace("Left","Right");
return p;
}
); 結果:
[ "Right Handed Screwdriver", "Right Blinker", "Long Weight" ]
この場合、カーソルを繰り返し処理し、文字列Leftのインスタンスを置き換えました。 Right 。その後、結果を返しました。
結果は配列として返されます。
エラー?
次のようなエラーが発生した場合:
uncaught exception: TypeError: db.products.findOne(...).map is not a function : @(shell):1:1
find()を使用していることを確認してください findOne()ではありません 。
findOne() メソッドは、カーソルではなく実際のドキュメントを返します。したがって、map() findOne()では機能しません 。また、機能したとしても、findOne() 単一のドキュメントのみを返すため、複数のドキュメントを繰り返す必要はありません。