所以我有百萬條記錄在幾個集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