由于我的代码中有一个奇怪的错误,我有一个字段名称是严格数字的集合(例如: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,但没有成功。
答案 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}});
});