在mongodb中将字符串前置到整个列

pxyaymoc  于 12个月前  发布在  Go
关注(0)|答案(2)|浏览(96)

我想在mongo集合的列的所有值前添加一个字符串。

db.testcoll.update({},{$set:{column1 : "prependstring"+ column1}});

有这样的东西吗?

8yoxcaq7

8yoxcaq71#

这可以在聚合管道中使用$concat操作符来实现。

db.testcoll.aggregate([{
  $project: {
    column1: {
      $concat: ['prependstring', '$column1']
    }
  }
}]);

正如官方MongoDB文档(here)中所指定的,$concat运算符只适用于字符串。

cgvd09ve

cgvd09ve2#

如果你不想使用管道,你可以运行一个简单的forEach循环来进行更改:

var recs = db.testcoll.find({});

recs.forEach(function(rec) {
  if (rec. column1.indexOf("prependstring") == 0) { // In case we run it more than once
    return;
  }
  var newval = "prependstring" + rec.column1;
  db.vouchers.update({_id: rec._id}, {$set: {column1: newval}});
});

请注意,根据记录的数量和集群设置,与管道选项相比,它可能非常慢。

相关问题