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

使用Mongoose在MongoDB中实现多字段子字符串模糊匹配查询

Mongoose 双字段模糊包含查询实现方案

方案1:$or + 正则匹配(通用场景,无需额外配置)

核心逻辑是通过MongoDB的$or操作符匹配两个字段满足条件的任意一项,搭配正则实现子串包含判断,示例代码如下:

// 假设你的集合对应模型为 UserModel
const targetStr = "ar";
const queryResult = await UserModel.find({
  $or: [
    // 匹配firstName包含目标字符串,$options:'i'代表忽略大小写
    { firstName: { $regex: targetStr, $options: 'i' } },
    // 匹配lastName包含目标字符串
    { lastName: { $regex: targetStr, $options: 'i' } }
  ]
});

如果不需要忽略大小写,直接去掉$options: 'i'配置即可。

方案2:文本索引查询(大数据量高频查询场景)

如果该查询是业务高频查询,且集合数据量较大,可以给两个字段建立复合文本索引提升查询效率:

步骤1:模型中定义索引

const userSchema = new mongoose.Schema({
  firstName: String,
  lastName: String
});
// 给firstName和lastName建立复合文本索引
userSchema.index({ firstName: 'text', lastName: 'text' });
const UserModel = mongoose.model('User', userSchema);

步骤2:查询代码

const targetStr = "ar";
const queryResult = await UserModel.find({
  $text: { $search: targetStr }
});

注意:文本索引默认是整词匹配,如果需要完全的任意子串包含匹配,还是优先选择方案1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:36:01