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

如何在MongoDB查询中仅当数组非空时才匹配language条件?

动态构建MongoDB查询条件(仅当language参数非空时添加匹配)

你可以通过动态构建查询条件数组的方式实现需求:先创建包含title、course、description这三个固定条件的数组,再判断searchForm.language是否为非空数组,若是则将language的匹配条件追加到数组中,最后把这个数组作为$and的参数传入find方法。

具体代码如下:

// 初始化基础查询条件数组
const queryConditions = [
  { 
    "fields.fieldName": "title", 
    "fields.value": { $regex : searchForm.title, $options: "gi" } 
  }, 
  { 
    "fields.fieldName": "course", 
    "fields.value": { $regex : searchForm.course, $options: "gi" } 
  }, 
  { 
    "fields.fieldName": "description", 
    "fields.value": { $regex : searchForm.description, $options: "gi" } 
  }
];

// 仅当language数组非空时,添加对应查询条件
if (searchForm.language && searchForm.language.length > 0) {
  queryConditions.push({
    "fields.fieldName": "language", 
    "fields.value.value": { $in: searchForm.language } 
  });
}

// 执行查询
contentsCollection.find({ $and: queryConditions });

这样做的好处是:当searchForm.language为空数组时,不会把这个条件加入查询,避免因为空数组的$in匹配导致查询不到任何文档;只有当它包含具体值时,才会启用language字段的过滤逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:12:01