Каждую неделю я получаю новую копию исходных данных (8500, и растет, записывает приблизительно и с полем id, которое Mongo использует как _id
), и я хочу искать (и сохранять , сохраняя при этом старые данные) обновленная информация (возможно, около 30 изменений/добавлений в месяц). Я пытаюсь найти наилучший подход.Mongodb: как сравнить DB с новыми данными
Моя первая мысль заключалась в том, что для каждой записи в новых данных получить запись БД с помощью этого _id, сравнить и обновить данные, которые были изменены. Но это приводит к 8500 асинхронным вызовам по сети (to mongolab) + 30 upserts
, где необходимо сохранить новые/измененные данные.
Итак, альтернативой является загрузка всего с самого начала. Но тогда я получаю массив из Монго и каждый раз нужно будет делать Array.find
, чтобы получить элемент, соответствующий новым данным.
Есть ли команда Mongo для возврата результатов .find({})
в качестве объекта Javascript с ключом _id? Или это иначе имеет смысл взять необработанный массив формы Монго и тайным это сам к объекту
Не уверен, что вы говорите здесь. Вы пытаетесь решить, что у вас уже есть, чтобы не спрашивать об этом из внешнего источника? Или вы просто пытаетесь не создавать новые записи, если что-то уже существует в вашем хранилище данных? Примеры говорят немного громче, чем слова, объясняя, что вы делаете. –
Не могли бы вы использовать mongo upsert? https://docs.mongodb.org/manual/tutorial/modify-documents/#upsert-option –
Я использую это, поскольку новые данные могут также содержать совершенно новые документы (с новым идентификатором), но вопрос в том, как сохранить версии данных –