我正在大型数据集上运行脚本以扩展现有信息。例如:
...
{
id : 1234567890
},
{
id : 1234567891
},
...
变成
...
{
id : 1234567890,
Name : "Joe"
},
{
id : 1234567891,
Name : "Bob"
},
...
我通过以下代码执行此操作:
for(var cur in members)
{
curMember = members[cur];
// fetch account based on curMember.id to 'curAccount'
if(curAccount != null)
{
curMember.DisplayName = curAccount.DisplayName;
}
}
在大多数情况下,这按预期工作。但是,偶尔(大约数万个条目),结果如下所示:
...
{
id : 1234567891,
Name : "Bob",
Name : "Bob"
},
...
我现在的数据格式无效,数据库无法读取,因为重复的属性名称没有意义。当脚本重新运行时,随机条目会发生这种情况,而不是每次都相同。我需要一种方法来防止这种情况发生,或者检测它已经发生,这样我就可以简单地重新处理条目。有人知道这里发生了什么吗?
编辑:经过进一步调查,问题似乎只有在被修改的对象来自 MongoDB 查询时才会出现。似乎如果代码多次显式地为同一个元素名称设置一个值,则该字段将被重复。所有同名元素似乎都设置为最近指定的值。如果它像我原来的问题一样只分配一次,那么它只会很少重复。我正在使用 MongoDB 2.4.1。