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

配列に埋め込まれたドキュメントを返すMongodbselectフィールド

    はい、しかしあなたが望む方法ではありません。次の手順を実行すると、配列の最初の要素のみが返されます。

    coll.find({_id:'2'}, { 'objects.0': 1})
    

    ただし、本当に必要なのは次のようなものです。

    coll.find({_id:'2', 'objects._id': '3'}, { 'objects.$' : 1})
    

    もちろん、これは実際にはMongoDBでは機能しません。

    その他の質問 をご覧ください 、これが「オブジェクトの配列」の代わりに「埋め込みオブジェクト」を使用する理由の1つです。 「埋め込みオブジェクト」を使用すると、次のことができます。

    coll.find({_id:'2'}, {'objects.3': 1}) // where 3 is the id of the third object
    

    これにより、必要な「埋め込みオブジェクト」だけを選択できます。

    MongoDBの特徴は、親ドキュメントが常にであるということです。 フェッチされました。クエリはトップレベルのドキュメントを返します。これは、アーキテクチャ全体に組み込まれています。ドキュメントの一部だけをリクエストした場合でも、サーバーはリクエストされた部分を提供する前に、ドキュメント全体をメモリにロードする必要があります。

    これを回避する唯一の方法は、新しい AggregationFramework です。 、しかしそれはまだ安定したブランチにはありません。



    1. Meteor / MongoDB:フォーム送信時に文字列の代わりに整数を挿入

    2. MongoDB-DBREFは必要ですか?

    3. node.jsデータベース

    4. MongoDB:それぞれの異なる値がいくつあるかを数えますか?