0

私のデータは次のようになります。

"_id" : ObjectId("53a173630364206735975b35"),
"username" : "TestUserID",
"resources" : [
    {
        "id" : "FirstTestResourceId",
        "tags" : [
            "TestResourceTag1",
            "TestResourceTag2"
        ],
    }
    {
        "id" : "SecondTestResourceId",
        "tags" : [
            "TestResourceTag1",
            "TestResourceTag2"
        ],
    }
]

私がやりたいことは、任意のタグが文字列の配列の任意のメンバーと一致するユーザーのすべてのリソース ドキュメントを取得することです。

私がする時:

db.collection.find({username: 'TestUserID', 'resources.tags': { $in: ['TestResourceTag1']}})

正常に動作しているようです (正しいリソース サブドキュメントを含む正しいドキュメントが返されますが、Java クラスで試してみると nada.

Iterable<Resource> resources = userCollection.find("{username: #, 'resources.tags': { $in: #}}", userID, tags).as(Resource.class);

userID = 文字列およびタグ = 文字列[]

クエリで何かぼんやりしていると思いますが、どこにも答えが見つからないようです。

この問題に関するガイダンスに最も感謝しています。

4

1 に答える 1

0

変数にList<String>は String の配列の代わりにa を使用してください。tags

String[] tags = new String[]{"TestResourceTag1"};

使ってみて

List<String> tags = Arrays.asList("TestResourceTag1");

お役に立てれば。

于 2014-07-16T13:15:00.433 に答える