21

我正面临 Spring Data MongoDB Criteria APIorOperator问题。

以下是不规则动词的查询结果:(终端输出

> db.verb.find({'v2':'wrote'});
{ "_id" : ObjectId("5161a8adba8c6390849da453"), "v1" : "write", "v2" : "wrote", "v3" : "written" }

我使用Spring Data MongoDB Criteria APIv1按动词或v2值查询动词:

Criteria criteriaV1 = Criteria.where("v1").is(verb);
Criteria criteriaV2 = Criteria.where("v2").is(verb);
Query query = new Query(criteriaV1.orOperator(criteriaV2));
List<Verb> verbList = mongoTemplate.find(query, Verb.class)

但不幸verbList的是没有任何项目。

4

2 回答 2

54

据我记得,为了使用 orOperator 你应该这样做:

查询 query = new Query(new Criteria().orOperator(criteriaV1,criteriaV2));
于 2013-04-07T21:17:38.263 回答
2

我们需要用 OR 条件明确指定一个新标准 - 试试下面的例子

Criteria criteria = Criteria.where("field1").is(val1).
                .andOperator(new Criteria().orOperator(Criteria.where("field2").is(filterVal),
                        Criteria.where("field3").is(filterVal)));
于 2019-08-02T18:17:52.590 回答