sql >> データベース >  >> NoSQL >> MongoDB

MongoDB map()

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


    1. MapReduceの結果は100に制限されているようですか?

    2. Mongoose(またはMongoDB)のTransientTransactionErrorとは何ですか?

    3. マングースはネストされた配列にデータを入力します

    4. 属性のないクラスでJsonConverterをグローバルに使用する