はい、しかしあなたが望む方法ではありません。次の手順を実行すると、配列の最初の要素のみが返されます。
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 です。 、しかしそれはまだ安定したブランチにはありません。