我想在 mongo 集合列的所有值前面添加一个字符串。
类似
db.testcoll.update({},{$set:{column1 : "prependstring"+ column1}});
有这样的吗?
这可以在聚合管道中使用
$concat
运算符来实现。
db.testcoll.aggregate([{
$project: {
column1: {
$concat: ['prependstring', '$column1']
}
}
}]);
如官方 MongoDB 文档(此处)中所指定,
$concat
运算符仅适用于字符串。
如果您不想使用管道,可以运行一个简单的 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}});
});
请注意,根据记录数量和集群设置,与管道选项相比,它可能会相当慢。