Я создаю сложный запрос манго в зависимости от нескольких параметров. Одним из критериев, что я хочу сделать с Критерии вспомогательный класс является:Запрос критерия MongoTemplate
{"field1": {$exists: true, $ne: false}}
Я пытался сделать это с:
Criteria.where("field1").is(Criteria.where("$ne").is(false).and("$exists").is(true))
Но он генерирует
{ "field1" : { $java : [email protected] }
Так , как достичь точный запрос, который мне нужен? Я не могу жёстко этой строки запроса, так как этот criteions типа генерируется динамически для FIELD1 ... fieldN, а затем в сочетании с $ или:
statusCriteria = statusCriteria.orOperator(criterias.toArray(new Criteria[criterias.size()]));
, который генерирует следующий блок { "$ и": [{ "поле": { "$ существует": истинно}}, { "поле": { «$ пе ": false}}]} Это не совсем то, что мне нужно, но логично. Разве это не привело бы к проблемам с производительностью из-за удвоения «поля»? – Aeteros
@Aeteros Нет проблем с производительностью. В [docs] (https://docs.mongodb.org/manual/reference/operator/query/and/) MongoDB предоставляет неявную операцию 'AND' при указании списка выражений, разделенных запятыми. Использование явного 'AND' с оператором' $ and' необходимо, когда одно и то же поле или оператор должны быть указаны в нескольких выражениях. – chridam