Java mongoTemplate的标准
这是一个查询,我想使用它来获取用户。如果文档中存在所有字段,则其工作正常。否则,它将抛出Java mongoTemplate的标准,java,spring,mongodb,Java,Spring,Mongodb,这是一个查询,我想使用它来获取用户。如果文档中存在所有字段,则其工作正常。否则,它将抛出NullPointerException。如何更改此查询,以检查某些字段是否不存在,是否不应按q正则表达式 提前感谢。您可以使用MongoDB的$exists操作符 在Java中,应该这样使用: BasicQuery query = new BasicQuery("{}"); query.addCriteria(Criteria.where(FaceFields.isValid).is(true) .
NullPointerException
。如何更改此查询,以检查某些字段是否不存在,是否不应按q正则表达式
提前感谢。您可以使用MongoDB的
$exists
操作符
在Java中,应该这样使用:
BasicQuery query = new BasicQuery("{}");
query.addCriteria(Criteria.where(FaceFields.isValid).is(true)
.orOperator(
Criteria.where(FaceFields.FIRSTNAME).regex(q),
Criteria.where(FaceFields.LASTNAME).regex(q),
Criteria.where(FaceFields.MIDDLENAME).regex(q)
)
);
MongoDB的$和操作员使用短路评估:
如果第一个表达式(如expression1)的计算结果为false,MongoDB将不会计算其余的表达式
虽然应该可以执行(伪代码查询):
Criteria.where("myField").exists(true)
WHERE (
( isValid = true )
AND (
( EXISTS(firstname, true) AND REGEXP(firstname, q) )
OR
( EXISTS(lastname, true) AND REGEXP(lastname, q) )
OR
( EXISTS(middlename, true) AND REGEXP(middlename, q) )
)
)