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 = String 和 tags = String[]

我想我在查询中做了一些模糊的事情,但我似乎无法在任何地方找到答案。

对于这个问题的任何指导,我将不胜感激。

4

1 回答 1

0

Use a List<String> instead of an array of String for your tags variable, so instead of

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

try using

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

Hope this helps.

于 2014-07-16T13:15:00.433 回答