2014-01-16 5 views
0

Я хочу сравнить две очень большие коллекции, основная часть операции - это два значка, какой элемент изменяется или удален. Моя коллекция 1 и 2 имеют одинаковую структуру и имеют более 3 миллионов записей пример : записи 1 {id:'7865456465465',name:'tototo', info:'tototo'}Mongodb сравнить две большие коллекции данных

Так я хочу знать: какой элемент является изменение, и то, что элемент не присутствует в коллекции 2. Что является лучшим решением, чтобы сделать это?

+0

Знаете ли вы, что некоторые документы были изменены? –

+0

Asya, Да, я хочу знать, был ли элемент удален или изменен. – timactive

+0

Просто начните прокручивать каждый, отслеживая успех/неудачи. Нет лучшего варианта, чем сравнение грубой силы. – WiredPrairie

ответ

0

1) Определите, что означает равенство двух документов. Для меня это будет: оба документа должны содержать все поля с одинаковыми значениями, если их идентификаторы уникальны. Обратите внимание, что mongo не гарантирует порядок поля, и если вы обновите поле, оно может перейти к концу документа, что является прекрасным.

2) Я бы использовал некоторую фреймворк, который может подключаться к mongo и получать данные, в то же время преобразовывая его в структуру данных, подобную карте, или даже JSON. Например, я бы пошел с записью Scala + Lift (db.coll.findAll()) + Lift JSON. В библиотеке JSON Lift есть функция Diff, которая даст вам разницу двух документов JSON.

3) Наконец, я бы сортировал обе коллекции по ids, открывал курсоры db, итерации и сравнения.

+0

Я изучаю на самом деле ваш подход – timactive

Смежные вопросы