属性可以为空的MongoDB正则表达式查询

xqk2d5yq  于 2023-02-07  发布在  Go
关注(0)|答案(1)|浏览(114)

在Spring中编写一个MongoDB正则表达式查询,其字段可以为空。
我想按姓名和电话查询文档:

Query(value = "{ {'name' : {$regex:?0,$options:'i'}},
                          {'phone' : {$regex:?1,$options:'i'}} }")
Document findByFullNameOrPhone(String fullName, String phone);

我通过查询传递的phone值是“.*”,试图匹配所有内容。
它可以工作,但问题是 phone 是一个可以为空的字段。如果文档没有phone值,它就不会包含在查询结果中。是否可以使用此查询来查找数据库中的所有文档,即使文档没有phone值?

idv4meu8

idv4meu81#

只需添加空检查。

Query(value = "{
  'name': {'$regex': ?0,'options': 'i'},
  $or: [
    {'phone': null},
    {'phone': {'$regex': ?1,'options': 'i'}}
  ]
}")
Document findByFullNameOrPhone(String fullName, String phone);

Demo

相关问题