使用聚合在MongoDB中更新字符串值

时间:2018-06-29 20:03:29

标签: mongodb aggregation-framework

我在一个集合中有多个文档,需要从其中更新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值。预先感谢您提供任何答案或帮助。

0 个答案:

没有答案