Mongodb字段名称为数字 - 如何在更新中使用它?

时间:2014-11-28 14:59:13

标签: mongodb

由于我的代码中有一个奇怪的错误,我有一个字段名称是严格数字的集合(例如:34344,54675,34356)。 现在我尝试将这些字段值移动到另一个字段(例如:名称,电子邮件等),但是当我运行更新命令时:

db.collection.find({"id_field" : 1996}).forEach(function (elem) {db.collection.update({_id: elem._id},{$set: {name: elem.36536}});});

我得到的只是一个错误:

SyntaxError: Unexpected number

我该如何处理?我已经尝试使用elem [36536]而不是elem.36536,但没有成功。

2 个答案:

答案 0 :(得分:0)

如果您的文件是这样的

 {     
    "_id" : 1,
    "elem" : {
        "123" : "barno",
        "456" : "foo@gmail.com"
    }
}

你可以$rename关键文件。

db.d.update({"_id" : 1},{$rename:{'elem.123':'elem.name','elem.456':'elem.email'}})

结果:

{
    "_id" : 1,
    "elem" : {
        "name" : "barno",
        "email" : "foo@gmail.com"
    }
}

答案 1 :(得分:0)

如果我的问题正确,这段代码可能会对您有所帮助:

db.collection.find({"id_field" : 1996}).forEach(function (elem) 
{
   var value = elem['36536'];
   db.collection.update({_id: elem._id},{$set: {name: value}});
});