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()
単一のドキュメントのみを返すため、複数のドキュメントを繰り返す必要はありません。