2012-02-23 18 views
0

サブ文書の著者を、以下に示すオブジェクトで、直接アクセスすることなく、つまりauthors[0]というように選択すると、返される結果は{"_id":"4f44af6a024342300e000002", visible: true}になりますか?mongoDBでサブフィールドを見つける

オブジェクト:私はこれを行うことによってそれを更新することができたが、選択すると、それは全く別の話のように思える

{ 
    _id:  "4f44af6a024342300e000001", 
    title: "A book", 
    created: "2012-02-22T14:12:51.305Z" 
    authors: [{"_id":"4f44af6a024342300e000002", visible: true}] 
} 

books.update({_id: "4f44af6a024342300e000001",'authors._id': "4f44af6a024342300e000002"}, 
      {$set: {'books.$.visible': true}}, function(err) { 
    // ... 
}); 
+0

あなたの質問を理解していれば、親コレクション 'books'を渡さずにサブ文書のみをクエリしたいですか? –

+0

はい。この場合は「著者」の1つであるサブ文書のみ – Industrial

+0

[Mongodb selectフィールドを埋め込み文書を配列に戻す]の重複が可能です(http://stackoverflow.com/questions/9201743/mongodb-select-field-to- return-embedded-document-in-array) –

答えて

1

それは現在可能ではありませんが(参照余分な詳細と同様の質問)

In MongoDB, how does on get the value in a field for an embedded document, but query based on a different value

次のバージョンでは、アグリゲーションフレームワークがこの方向にあるステップを与えることができますが、実際の解決策は仮想コレクションです。

当面の間、親を通過する場合にのみ埋め込みドキュメントを使用してください。