jongo находит вложенные документы с массивом значений

#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");
  

Надеюсь, это поможет.