У меня есть вариант использования, когда мой запрос нужно найти на основе 3 необязательных полей, и одно из них передается как коллекция.
Часть «3 необязательных поля» уже решена в этом сообщении >Запрос Spring Data MongoDB И/ИЛИ с несколькими необязательными параметрами
Однако я столкнулся с проблемой с $in
для поданной коллекции.
Например, в следующем запросе
{ $and :
[{
$and:
[
{$or : [ { $where: '?0 == null' } , { a : ?0 }]},
{$or : [ { $where: '?1 == null' } , { b : ?1 }]},
{$or : [ { $where: '?2 == null' } , { c : ?2 }]}
]
}]
}
В моем случае поле a
фактически передается как коллекция, мне нужно найти этот объект в MongoDB с полем a
, которое является $in
коллекцией, которую я передал.
Я пробовал с чем-то вроде этого
{ $and :
[{
$and:
[
{$or : [ { $where: '?0 == null' } , { a : { $in : ?0 }}]},
{$or : [ { $where: '?1 == null' } , { b : ?1 }]},
{$or : [ { $where: '?2 == null' } , { c : ?2 }]}
]
}]
}
Тем не менее, я получил NPE за это, когда я передаю коллекцию null
.