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

如何在MongoDB中查找数组元素以Dr.开头的文档?

问题分析与解决

你的查询错误原因在于:$elemMatch 里直接写 "Dr." 是在匹配数组中完全等于"Dr."的元素,但你的目标是匹配以"Dr."开头的元素,而且单条件匹配数组元素时,$elemMatch 其实可以不用,直接用正则更简洁。

正确写法1:直接使用正则表达式匹配数组字段

MongoDB会自动遍历数组元素,只要有任意元素符合正则规则就会返回该文档:

const result = await client.db("Test").collection("test")
    .find({ contact: /^Dr\./ });

这里的/^Dr\./是正则表达式,^表示字符串开头,\.是转义后的点(因为点在正则里是通配符,必须转义)。

正确写法2:结合$elemMatch使用正则(适用于多条件匹配场景)

如果后续需要给数组元素加更多条件,可以用$elemMatch包裹正则:

const result = await client.db("Test").collection("test")
    .find({ contact: { $elemMatch: { $regex: "^Dr\\." } } });

注意这里用$regex操作符时,点需要双重转义(因为在字符串里转义一次,正则里再转义一次)。

另外,如果你需要大小写不敏感的匹配,可以加上$options: "i",比如:

// 大小写不敏感匹配
const result = await client.db("Test").collection("test")
    .find({ contact: /^Dr\./i });

内容的提问来源于stack exchange,提问作者agent_bean

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:02:05