Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java mongoTemplate的标准_Java_Spring_Mongodb - Fatal编程技术网

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) )
  )
)