#mongodb #jongo
#mongodb #jongo
Вопрос:
Мои данные выглядят так:
"_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 = Строка и теги = Строка[]
Я предполагаю, что я делаю что-то неясное в запросе, но, похоже, я нигде не могу найти ответ.
Я был бы очень признателен за любые рекомендации по этой проблеме.
Ответ №1:
Используйте a List<String>
вместо массива строк для вашей tags
переменной, поэтому вместо
String[] tags = new String[]{"TestResourceTag1"};
попробуйте использовать
List<String> tags = Arrays.asList("TestResourceTag1");
Надеюсь, это поможет.