我的数据如下:
"_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 []
我想我在查询中做了一些暗淡的事情,但我似乎无法在任何地方找到答案。
我非常感谢有关此问题的任何指导。
答案 0 :(得分:0)
为List<String>
变量使用tags
而不是字符串数组,而不是
String[] tags = new String[]{"TestResourceTag1"};
尝试使用
List<String> tags = Arrays.asList("TestResourceTag1");
希望这有帮助。