【发布时间】:2021-11-16 07:20:38
【问题描述】:
给定:如下文档
{
_id: ObjectId("5eb...."),
jobId: '40297467',
aliases: [aX1, bX2_0, cX1X9_0]
}
何时: X1...X9 组合在任何别名中都不受欢迎
那么:我想要一个 mongo 原生优雅的方式用空字符串替换适当的正则表达式模式,因此,我的文档为下面:
{
_id: ObjectId("5eb...."),
jobId: '40297467',
aliases: [a, b_0, c_0]
}
作业完成:
这里MONGO mongodb script to replace a substring from a array element 有一个解决方案,用于不需要模式并且有一个简单的字符串要替换的情况,但是,它没有多大用处 - 因为聚合 replaceAll 找到参数 “任何解析为字符串或空值的有效表达式” (https://docs.mongodb.com/manual/reference/operator/aggregation/replaceAll/) 所以,如果我使用模式,它就不起作用。
mongo forEach 循环完成了这项工作,但对我来说它看起来有点难看......此外,我不确定这种循环的价格是多少。
db.col.find({ jobId: "40297467" }).forEach(function (x) {
const regex = /*pattern*/gi;
array = []
for (let alias of x.aliases) {
array.push(alias.replace(regex, ""));
}
db.col.update({ _id: x._id }, { $set: { aliases: array} });
});
任何帮助将不胜感激:)
【问题讨论】:
标签: javascript arrays regex mongodb