You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:55:53