我的收藏中有以下文件
{
"_id" : ObjectId("53732dc386d78e446c73fbb3"),
"elig" : 18,
"tags" : {
"6" : "49.6",
"9" : "657"
},
"book" : {
"type" : "100",
"id" : "59598699"
}
}
如果你注意到,标签是键值对与数字形式的键(基本上是FIX消息,标签和值对)
我需要将tags.6从String(“49.6”)更新为Float(49.6)。
当我尝试将book.type从“100”更新为100时,它有效。以下工作。
db.coll.find().forEach(function(data) {
db.coll.update(
{_id:data._id},
{$set:{"book.type":parseFloat(data.book.type) }}
);
})
但对于tags.6,:
db.coll.find().forEach(function(data) {
db.coll.update(
{_id:data._id},
{$set:{"tags.6":data.tags.6 }}
);
})
它给出了错误
2014-05-15T08:23:40.161 + 0100 SyntaxError:意外的数字
我不能将数字作为键吗?
请告诉我如何更新。
答案 0 :(得分:0)
问题在于您如何访问数据。使用data.tags["6"]
代替data.tags.6
。
即这样的更新会起作用:
db.coll.update(
{_id:data._id},
{$set:{"tags.6":data.tags["6"] }}
);