所以我有百万条记录在几个集MongoDB数据库。下面是一些记录(大大简化)例如...MongoDB的:在全球范围内替换另一个到一个对象ID的所有引用?
收集一个文件看起来像:
{
_id: ObjectID(....)
name: "Hubert Humphrey"
}
集合体B文件看起来像:
{
_id: ObjectID(....)
ReferenceSummary: [
{
person: ObjectID(<some-ID-from-Collection-A>)
count: 312
},
{
person: ObjectID(<some-other-ID-from-Collection-A>)
count: 42
},
...
],
TopPeople: [ ObjectID(<another-ID-from-Collection-A>), ObjectID(<yet-another-ID-from-Collection-A>), ...]
}
现在,这里的问题。我们意识到,我们有一些重复的(只有3或4)在集合A.并在集合B.他们每个引用的数十万次
但是,有没有实例,其中一个给定的集合体B文件引用两个不同的集合A相互重复的文档。
所以,我需要做的解决这个问题是:对于每一对在收集一个重复的,与_id
的ObjectId(X)
和ObjectId(Y)
,与ObjectId(X)
取代的ObjectId(Y)
所有出现在集合B.
如果我正在处理原始JSON文件,我只是做一个字符串替换和用它做。
有一个简单的方法来做到这在蒙戈外壳,只需使用一个命令对每个集合中重复的?
我认为人是重复的 - 你有一种方法来选择复制(这是id字段或其他元数据?) – profesor79
这只是一些特定的重复项,由手动输入错误引起。一次简单地替换其中一个引用的简单方法就可以做到这一点。 – DanM