1

次のようなドキュメントで Java ドライバーを使用しています (実際のテスト例)。

{
    "_id" : ObjectId("5207fe359b88bfa6f90a82b0"),
    "meta_id" : "d6eb1b13-50c7-473f-8348-b5a638a542a0",
    "name" : "Fake Name Inc.",
    "created" : ISODate("2013-08-11T21:12:21.533Z"),
    "members" : {
        "5207fe359b88bfa6f90a82af" : [
            "Admin",
            "User"
        ]
    }
}

パス「 members.5207fe359b88bfa6f90a82af」(ロールのリスト)で文字列配列を選択したい。私はそれを行う方法について途方に暮れています。ここではプロジェクションが機能するように見えますが、私は Mongo に慣れていないため、プロジェクションの記述方法が明らかではありません。

もちろん、オブジェクト全体をロードすることも、「メンバー」フィールドだけをロードすることもできますが、求めているデータを正確に選択できるはずです。

では、そのようなクエリがどのように記述されるかを知っている人はいますか?

注: この質問は、物事を簡単にするためにドキュメントの構造を変更する必要があるかもしれないことを示唆しています: MongoDB - Query by sub-tree

4

1 に答える 1

3

これを行うには、 の射影パラメーターでドット表記を使用できますfind。シェル内:

db.test.find(
    {_id : ObjectId("5207fe359b88bfa6f90a82b0")},
    {'members.5207fe359b88bfa6f90a82af': 1, _id: 0})

戻り値:

{
  "members": {
    "5207fe359b88bfa6f90a82af": [
      "Admin",
      "User"
    ]
  }
}
于 2013-08-11T22:59:44.743 に答える