Я рыскал по Интернету несколько часов, чтобы найти решение, в котором выполнение массовых upserts в умных коллекциях Meteor.js является эффективным.
Сценарий:
Я нажимаю api, чтобы асинхронно получать обновленную информацию для 200 свойств каждые 12 часов. Для каждого свойства я получаю в среднем около 300 объектов JSON. 70% объектов могли не обновляться. Но для остальных 30% объектов мне нужно обновить их в базе данных. Поскольку невозможно найти эти 30% объектов, не сопоставив их с документами в базе данных, я решил обновить все документы.
Мои варианты:
- Выполните цикл по массиву объектов и вставьте каждый документ в базу данных.
- Удалите все документы из коллекции и массово вставьте новые объекты.
Для варианта 1 запуск цикла и загрузка 60К документов (которые со временем будут увеличиваться) занимает много времени. Но на данный момент кажется единственным правдоподобным вариантом.
Для варианта 2 meteor.js не допускает массовую вставку в свои смарт-коллекции. Даже для этого нам придется перебирать массив объектов.
Есть ли другой вариант, где я могу добиться этого эффективно?