У меня есть коллекция (и) монго с 2,5 миллионами данных и может вырасти до 3 миллионов. Я использую весеннюю партию и пытаюсь скопировать эту коллекцию в другую коллекцию. Подходы я использовал следующие:Копирование коллекции mongo с огромными данными в другую коллекцию?
Внутри Тасклет, я создал объект ProcessBuilder и называется скрипт, который выполняет запрос Монго. Содержание скрипта выглядит следующим образом:
> mongo $serverURL/$dbName js-file-to-execute.js // js file contains copy command (db.collection.copyto('newCollection'))
Для меньшего объема данных (< 200 к) он работает нормально, но за 2 миллиона данных он повесит сервер Монго и задание получило неудавшийся с розеткой Exception
- Используется шаблон Монго и выполнен запрос
dbMongoTemplate.getDb().getCollection("collection").aggregate(Arrays.asList((DBObject) new BasicDBObject("$out","newCollection")));
Это выполняет Монго агрегатных запросов db.collection.aggregate({$out : "newCollection"})
Это также работал для коллекций с меньшим количеством данных, но для больших наборов данных он продолжает работать до тех пор, время сокета из не происходит и не работу в конце.
Просьба предложить эффективный способ копирования данных?
Какую версию и хранения двигателя вы используете? Какова структура кластера MongoDB: автономный, набор реплик, очерченный? Вы ищете самое быстрое решение (настенные часы), использует наименее дополнительные ресурсы (диск и/или память) или самое низкое влияние на сервер (например, не вешайте сервер). –
Я использую ** mongodb 2.6 ** и mongoDB кластер ** автономный **. Я бы предпочел балансировочное решение, которое использует значительное количество времени со средним воздействием на сервер. –
Помог ли совет profesor79 u? Im в той же ситуации –