2

mongodbのマップ内のキーの存在に応じて選択的に取得することは可能ですか?もしそうなら、あなたはそれをどのようにやっていきますか?

たとえば、次のようなドキュメントがあるとします。

{ "_id": 1234,
    "parentfield1" : {
        "childfield1" : { ...},
        "childfield2" : { ...},
        "childfield5" : { ...}, // There might be many childfields.. > 50
    },
} 

複数のオプションから選択できる特定の子フィールドをドキュメントから選択的に取得するにはどうすればよいですか?そのうちのいくつかはドキュメントに存在しない可能性があります。

すなわち

input "childfield1", "childfield2", "childfield3"

-> output 

{ "_id": 1234,
  "parentfield1": {
      "childfield1" : { ... },
      "childfield2" : { ... },
  },
}

それも実行可能ですか?効率的にもできるのでしょうか?どんな助けでも素晴らしいでしょう(python、go)。

4

1 に答える 1

0

はい、それが:のprojectionパラメータの目的です。find

db.collection.find({_id: 1234}, {
    'parentfield1.childfield1': 1,
    'parentfield1.childfield2': 1,
    'parentfield1.childfield3': 1
});

指定されたフィールドが特定のドキュメントに存在しない場合でも、他の一致するフィールドは含まれます。

projection動的にしたい場合は、プログラムでパラメータオブジェクトを作成します。

于 2013-02-08T16:26:08.180 に答える