我在一个集合中有多个文档,需要从其中更新canImage
的字符串值:
{
_id: ObjectId("1"),
canImage: "dev/team/can-ryan_Sk87vZjgM.png",
teamOrder: NumberLong("1"),
...
}
...一个看起来像这样的值:
{
_id: ObjectId("1"),
canImage: "prod/team/can-ryan_Sk87vZjgM.png",
teamOrder: NumberLong("1"),
...
}
像这样使用聚合框架以及$project
和$substr
:
db.collection.aggregate(
[
{
$project:
{
canImage: 1,
imageSubstring: { $substr: [ "$canImage", 4, 60 ] }
}
}
]
)
我已经能够产生以下结果:
{
_id: ObjectId("1"),
canImage: "dev/team/can-ryan_Sk87vZjgM.png",
imageSubstring: "team/can-ryan_Sk87vZjgM.png"
}
我遇到问题的部分是使用$concat
将字符串值“ prod /”与值imageSubstring
相加。还是在添加.forEach(function(doc){ db.collection.updateOne() })
时将两个值连接起来?
.forEach(function(doc) {
db.collection.updateOne(
{ "_id": doc._id },
{
"$set": {
"canImage": "prod/"+doc.imageSubstring,
}
}
)
})
我正在使用MongoDB v3.2,虽然对mongo并不陌生,但我对使用聚合功能还是陌生的。回顾一下,我只是想获取canImage值的子字符串值(不包括“ dev /”),并用“ prod /” + canImage的子字符串值更新canImage值。预先感谢您提供任何答案或帮助。