将字符串添加到 mongodb 中的整个列

问题描述 投票:0回答:2

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

类似

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

有这样的吗?

string mongodb prepend
2个回答
5
投票

这可以在聚合管道中使用

$concat
运算符来实现。

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

如官方 MongoDB 文档(此处)中所指定,

$concat
运算符仅适用于字符串。


0
投票

如果您不想使用管道,可以运行一个简单的 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}});
});

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

© www.soinside.com 2019 - 2024. All rights reserved.