首页 > 解决方案 > 在 mongodb update 语句中访问带空格的字段

问题描述

我在集合中有以下文档字段

{
     _id: ObjectId("5f1b6b26ea1c3b378704b7e9"),
     "Gene Name":"xyz"
}

我正在尝试添加一个新字段但没有空格。我怎样才能做到这一点 ?因为以下不起作用

db.getCollection('collection').updateMany(
   { },
   { $set: { "geneName": "$'Gene Name'" } }
)

而且这也不起作用

db.getCollection('collection').find({}).forEach( function(doc) 
    { 
       db.getCollection('collection').updateOne(
          {_id:doc._id },
          { $set: { "geneName": doc.Gene Name } }
       );
    } );

请注意,我不想重命名现有字段。我只是想访问当前字段以将其添加到新字段。

如果您可以为 forEach 和聚合管道提供解决方案(如果其中任何一个都可以用于此类操作),我会很高兴,因为我也想学习如何使用“$ {field}”表示法访问这些烦人的字段

标签: javascriptmongodb

解决方案


updateOne在 MongodDB 4.2+ 版本中,您可以在、updateManyupdate集合方法中使用聚合管道。这是您需要的:

db.collection.update({},
[
  {
    $set: {
      "anotherfield": "$Gene Name"
    }
  }
])

结果将是:

  {
    "Gene Name": "xyz",
    "_id": ObjectId("5f1b6b26ea1c3b378704b7e9"),
    "anotherfield": "xyz"
  }

游乐场:https ://mongoplayground.net/p/-kfY7sqNlBm


推荐阅读