0

何日も忙しくしている問題の答えを見つけようとしています。MongDB コレクション (mongoose を使用) に埋め込まれたドキュメントを検索または更新したいと考えています。私が知っている可能性があります。次のようなことができます。

User.findOne({_id: id}, function(err, user) {
var embeddedDoc = user.embeddedDocs.id('embeddedDocId');
});

これは確かに機能します。ただし、私が知らない特定の docId がある場合に限ります (埋め込まれたドキュメントは配列の項目 (x) である可能性があります)。

私の質問は、とにかくこれは可能ですか? それとも、mongodb では、ID を指定しないと埋め込みドキュメントを見つけられないのでしょうか?

よろしく、ダウエ。

4

1 に答える 1

0

はい、できます。ドット表記を使用して、探している埋め込みドキュメントのプロパティを指定します。次のようなドキュメントを持つ人のコレクションがあるとします。

{
  _id:123,
  name:"john",
  address: {
      Street:"any", 
      zip:1234
    }
}

次に、次のような住所フィールドでクエリを実行している人物を見つけることができます。

db.persons.find("address.zip":1234, ...)

埋め込まれたドキュメントだけではなく、ドキュメント全体 (この場合は人) が得られることを考慮してください。

于 2013-06-28T21:04:04.307 に答える