Итак, у меня есть база данных MongoDB с миллионами записей в нескольких коллекциях. Вот (значительно упрощенный) пример некоторых записей...
Документы коллекции А выглядят так:
{
_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 с _id
ObjectId(X)
и ObjectId(Y)
заменить все вхождения ObjectId(Y)
на ObjectId(X)
для всех документов в коллекции B.
Если бы я имел дело с необработанными файлами JSON, я бы просто сделал замену строки и покончил с этим.
Есть ли простой способ сделать это в оболочке mongo, просто используя одну команду для каждого из дубликатов коллекции A?