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

MongoDBで値だけを返す方法

    find()などのメソッドを使用する場合 またはfindOne() MongoDBでは、デフォルトでドキュメント全体が返されます。また、プロジェクションを使用する場合は、特定のキーと値のペアを返すことができます。

    しかし、値だけが必要な場合はどうなりますか?

    findOne()を使用するときに、そのフィールドの名前をクエリに追加することで、フィールドの値を抽出できます。 。

    productsというコレクションがあるとします。 次のドキュメントを使用:

    { "_id" : 1, "product" : "Bat", "sizes" : [ "S", "M", "L" ] }
    { "_id" : 2, "product" : "Hat", "sizes" : [ "S", "L", "XL" ] }
    { "_id" : 3, "product" : "Cap", "sizes" : [ "M", "L" ] }

    最初のドキュメントの製品を返品したい場合は、次のようにすることができます。

    db.products.findOne().product

    結果:

    Bat

    findOne()を使用したことに注意してください 方法。この手法は、find()では機能しません 方法。 findOne() メソッドは単一のドキュメントを返しますが、find() メソッドは単にカーソルをドキュメントに返します。

    配列を返したい場合は、次のようにすることができます:

    db.products.findOne().sizes

    結果:

    [ "S", "M", "L" ]

    そして、そのインデックスを参照することで配列値を取得できます:

    db.products.findOne().sizes[0]

    結果:

    S

    配列はゼロベースであるため、0 配列の最初の要素である1を参照します 2番目の要素2を参照します 3番目など。

    特定のドキュメント

    デフォルトでは、findOne() メソッドは、コレクションの最初のドキュメントを返します。最初の引数としてクエリを渡すことを指定することで、別のドキュメントを選択できます。

    findOne()なので、「最初の引数」と言います projectionも受け入れます オプションの2番目の引数としての引数。

    db.products.findOne({_id: 2}, {sizes: 1, _id: 0}).sizes

    結果:

    [ "S", "L", "XL" ]

    この場合、射影引数を追加しましたが、結果には影響しませんでした。ただし、値0を指定した場合は効果があります。その場合、何も返されませんでした。

    埋め込みドキュメント

    ドット表記を使用して、埋め込まれたドキュメントから値を返すことができます

    ドキュメントの例:

    {
    	"_id" : 1,
    	"name" : "Wag",
    	"details" : {
    		"type" : "Dog",
    		"weight" : 20
    	}
    }

    埋め込まれたドキュメントから値を返すには、次のようにします。

    db.pets.findOne().details.type

    結果:

    Dog


    1. MongoDB$text検索でANDとNOTを行う方法

    2. 反応でbase64画像を表示するにはどうすればよいですか?

    3. Redis Streamsは利用可能なすべてのメモリの使用をどのように処理しますか?

    4. 集計$lookup一致するパイプライン内のドキュメントの合計サイズが最大ドキュメントサイズを超えています