首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongoTemplate标准

mongoTemplate标准
EN

Stack Overflow用户
提问于 2015-02-10 13:13:13
回答 1查看 990关注 0票数 0
代码语言:javascript
复制
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)    
    )
);

这是查询,我想使用它,以获得用户。如果所有字段都存在于文档中,则工作正常。否则会抛出NullPointerException。如何更改此查询,以检查某些字段是否不存在,并且不应通过q进行正则化。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-02-10 20:27:25

您可以使用$exists运算符MongoDB。

在Java中,应该像这样使用它:

代码语言:javascript
复制
Criteria.where("myField").exists(true)

MongoDB的$and算子使用短路评估:http://docs.mongodb.org/manual/reference/operator/query/and/

“如果第一个表达式(例如expression1)计算为false,MongoDB将不计算其余表达式。”

尽管应该可以这样做(伪代码查询):

代码语言:javascript
复制
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) )
  )
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28432593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档