MongoDB:使用$ concat更新字段值的问题

时间:2017-01-16 11:08:06

标签: mongodb concatenation

我正在尝试通过将其与文字字符串连接来更新MongoDB集合中字段的值。除此之外,该字段是一个整数,我想在前面添加一个“0”,所以它将成为一个字符串。

我已经读过,我不能在单个更新指令中使用该字段的旧值,因此我使用 forEach()方法。

以下是代码:

db.col_1.find({"field_1": {$lt: 10000}}).forEach( function(i){
  db.col_1.update({_id: i._id},
    {$set: { "field_1": {$concat: ["0", i.field_1]}}} 
    )
});

返回结果是:

The dollar ($) prefixed field '$concat' in 'field_1.$concat' is not valid for storage.

我确定我没有正确编写$ concat命令,有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

$ concat是聚合管道,而不是更新操作符/修饰符。

似乎您可以通过以下操作来实现:

db.col_1
  .find({ "field_1": { $lt: 10000 } })
  .forEach( function(i) {
    db.col_1.update(
      { _id: i._id },
      { $set: { "field_1": "0" + i.field_1 } }
    )
   });

答案 1 :(得分:-1)

要使用 MongoDB版本4.2 的另一个字段的值更新MongoDB字段,还引入了$ set管道阶段运算符,该运算符是$ addFields的别名。您可以在此处使用$ set,因为它会映射我们要实现的目标。

new_dest_index