如何在MongoDB中使用$or运算符实现邮箱或手机号匹配查询
MongoDB $or 查询修正方案
嘿,我来帮你捋捋这个问题哈~
你现在的查询语句犯了一个常见的小错误:$or数组里只放了一个包含两个条件的对象,这其实会被MongoDB理解成同时满足邮箱和手机号匹配(相当于$and的逻辑),自然找不到符合预期的记录啦。
要实现你想要的「匹配邮箱为testemail@gmail.com 或者 手机号为123456789」的查询,正确的写法应该是把两个条件拆成独立的对象,放到$or数组里,具体代码如下:
user.find({ $or: [ { emailAddress: "testemail@gmail.com" }, { phoneNumber: "123456789" } ] })
逻辑说明
这样写之后,MongoDB会返回满足以下任一条件的所有文档:
- 文档的
emailAddress字段等于testemail@gmail.com(无论phoneNumber是什么) - 文档的
phoneNumber字段等于123456789(无论emailAddress是什么)
刚好就能得到你期望的两条记录:一条是邮箱和手机号都匹配的,另一条是邮箱匹配但手机号不同的。
内容的提问来源于stack exchange,提问作者user7333431
相关产品推荐
相关产品推荐

