如何从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
相关产品推荐
相关产品推荐

