【发布时间】:2021-06-08 04:36:24
【问题描述】:
我是 mongodb 的新手,我正在尝试(如标题所述)“给定一组匹配项,查找所有具有至少一个匹配项的文档并用给定值替换所有匹配项”
例如,假设我的 mongodb 中有这些文档:
[
{
"_id": ObjectId("5e90880a39cfeaaf0b97b576"),
"StudentName": [
"Chris, C",
"David, O",
"Mike, K",
"Sam, Bard"
]
},
{
"_id": ObjectId("5e90880a39cfeaaf0b97b577"),
"StudentName": [
"Joe, J",
"John, K",
"David, O",
"Sam, Ba rd",
"Sam, B"
]
}
]
我想查找所有包含 ["Sam, B", "Sam, Bard", "Sam, Ba rd"] 的文档并替换为 "Sam"
预期结果:
[
{
"_id": ObjectId("5e90880a39cfeaaf0b97b576"),
"StudentName": [
"Chris, C",
"David, O",
"Mike, K",
"Sam"
]
},
{
"_id": ObjectId("5e90880a39cfeaaf0b97b577"),
"StudentName": [
"Joe, J",
"John, K",
"David, O",
"Sam",
"Sam"
]
}
]
我想做什么:
db.collection.updateMany({ "StudentName": {"$in":["Sam, B", "Sam, Bard", "Sam, Ba rd"]} },{ "$set": { "StudentName.$": "Sam" } })
这没有用。有什么帮助吗?非常感谢。
EDIT1:我需要它是动态的,我将通过 NodeJS 应用程序提供可能匹配的数组和要替换的字符串。
EDIT2:举一个 EDIT1 的例子,我可以传递一个像这样的数组 ["John,"Bob","Jessica","Robert"] 来替换为 "Josh"
【问题讨论】:
标签: javascript mongodb aggregate