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

如何从MongoDB文档数组中提取含指定字符串的元素并生成新数组

MongoDB 提取指定文档中含特定字符串的数组元素

需要从MongoDB集合中,筛选出name字段为'STYLE'的文档,再提取该文档params数组里包含'DREAMS'的元素,最终生成一个新数组。

原始文档示例

[
  {
    name: "STYLE",
    params: ['DREAMS-FEEDING', 'DREAMS-PARI', 'SOFT']
  }, 
  {
    name: "BRAND",
    params: ['DREAMS', 'FEATHERLINE']
  }
]

方法1:使用MongoDB聚合管道(数据库层面处理)

适合大数据量场景,直接在数据库完成筛选和提取,效率更高:

db.collection.aggregate([
  // 匹配name为STYLE的目标文档
  { $match: { name: "STYLE" } },
  // 过滤params数组中包含DREAMS的元素
  {
    $project: {
      _id: 0,
      filteredParams: {
        $filter: {
          input: "$params",
          cond: { $regexMatch: { input: "$$this", regex: "DREAMS" } }
        }
      }
    }
  }
])

执行后返回的文档中,filteredParams字段的值就是目标数组:['DREAMS-FEEDING', 'DREAMS-PARI']

方法2:查询后在客户端处理

数据量较小时,可先查询到目标文档,再在代码中过滤数组(以MongoDB Shell为例):

// 查询name为STYLE的文档
const doc = db.collection.findOne({ name: "STYLE" });
// 过滤出包含DREAMS的数组元素
const result = doc.params.filter(item => item.includes('DREAMS'));
printjson(result);

执行后直接输出目标数组。

预期结果

['DREAMS-FEEDING', 'DREAMS-PARI']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:43:16