Aet*_*ros 6 java mongodb spring-data-mongodb mongotemplate
我正在Mongo根据多个参数生成复杂的查询.我想用Criteriahelper类制作的标准之一是:
{"field1": {$exists: true, $ne: false}}
Run Code Online (Sandbox Code Playgroud)
我试着用它来做:
Criteria.where("field1").is(Criteria.where("$ne").is(false).and("$exists").is(true))
Run Code Online (Sandbox Code Playgroud)
但它会产生:
{ "field1" : { $java : org.springframework.data.mongodb.core.query.Criteria@23864e60 }
Run Code Online (Sandbox Code Playgroud)
那么,如何实现我需要的确切查询?
我无法对该查询字符串进行硬编码,因为这些类型标准是为field1,... fieldN动态生成的,然后与$or:
statusCriteria = statusCriteria.orOperator(criterias.toArray(new Criteria[criterias.size()]));
Run Code Online (Sandbox Code Playgroud)
chr*_*dam 17
由于您无法使用Criteria.and()在同一字段中添加多个条件,请使用Criteria.andOperator()以下命令:
Query query = new Query();
query.addCriteria(
new Criteria().andOperator(
Criteria.where("field1").exists(true),
Criteria.where("field1").ne(false)
)
);
List<Foo> result = mongoTemplate.find(query, Foo.class);
System.out.println("query - " + query.toString());
for (Foo foo : result) {
System.out.println("result - " + foo);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23912 次 |
| 最近记录: |