Возможно ли обновление коллекции A с использованием данных из коллекции B?Объединение коллекций с использованием обновления
background: Целью этого является обход недостатка надлежащей атомарности мангодба. Я просматриваю некоторые данные журнала для создания агрегатов данных и хочу знать, что данные соответствуют тому, что было предложено для ввода. Вместо того, чтобы делать two phase commit, я хотел бы создать пакетную запись в холдинг-коллекцию. Когда сбор завершен (например, после 10000 записей или всего прочитанного файла), количество документов из базы данных сравнивается с количеством, которое сгенерировано приложением, если оно соответствует, обновляет большую коллекцию с помощью временной коллекции , В начале следующего импорта очистите временную коллекцию. Таким образом, если процесс будет прерван в любое время, вероятность его возникновения на этапе обновления будет меньше, и любая ошибка во время временной коллекции будет автоматически исправлена путем очистки временных данных и перезапуска процесса при следующем запуске.
Возможно ли обновить основную коллекцию, используя данные временной коллекции? Является ли такое обновление значительно быстрее, чем отдельные обновления из приложения?
обновление: данных выглядит следующим образом (ниже) в обоих сборниках. Я собираюсь объединить записи, которые найдут соответствующий документ на основе event
и month
, или создадим новый, если он не существует. он будет принимать ежедневные цифры и увеличивать их. Идея состоит в том, что процесс, который обновляет подсчеты во временном собрании, обновляется один раз на запись, поэтому каждый ежедневный счет - одна запись. Когда я закончил партию, я хотел бы обновить основную коллекцию содержимым временной коллекции, используя одну команду mongodb.
{
"event": "abc",
"month": "2012-04",
"daily": {
"1": 82,
"2": 6,
"3": 12,
"4": 23,
"5": 62,
...
}
}
Вы хотите обновить или добавить новые документы? Не могли бы вы привести пример двух коллекций и как должен выглядеть конечный продукт? – BanksySan
Я обновил вопрос – Daniel