1
我正在根据多个参数生成一个复杂的mongo查询。标准的一个,我想和标准辅助类是: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的字段N ...,然后用$或组合:
statusCriteria = statusCriteria.orOperator(criterias.toArray(new Criteria[criterias.size()]));
产生以下块{ “$和”:[{ “字段”:{ “$存在”:真}},{ “字段”:{“$ NE “:false}}]}这并不完全是我需要的,但从逻辑上讲它是。由于“场地”翻倍,会不会导致性能问题? – Aeteros
@Aterteros根本没有性能问题。从[docs](https://docs.mongodb.org/manual/reference/operator/query/and/)中,当指定逗号分隔的表达式列表时,MongoDB提供隐式的AND操作。当需要在多个表达式中指定相同的字段或运算符时,使用带'$和'运算符的显式'AND'是必需的。 – chridam