Задать вопрос

Как правильно вставлять большое кол-во документов в mongodb?

Через mongoose вставляю пачками документы в одну коллекцию, таким образом(опустил все ненужное):
docs1 = [1,2...n] // length = 50
Collection.create(docs1, function () {
   // Что то делаю
    docs2 = [1,2...n] // length = 10 тыс
    Collection.create(docs2)
})


И в итоге получается, что документы из масcива doc2, появляются в начале коллекции, хотя я ожидаю что они вставятся после масcива doc1, коллекция пустая в начале операции. Подскажите что я деалю не так? Ни как не могу понять почему такой результат.
  • Вопрос задан
  • 2830 просмотров
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Boniface
@Boniface
Здравствуйте! Дело конечно ваше, но я настоятельно рекомендую не использовать ORM'ы вякие. Обычный js драйвер очень хорош и удобен.

По делу. Посмотрите есть ли у mongoose возможность делать вставки через Bulk insert. Вот как это выглядит в стандартном варианте (без орм)

var bulk = db.items.initializeUnorderedBulkOp();
bulk.insert( { item: "abc123", defaultQty: 100, status: "A", points: 100 } );
bulk.insert( { item: "ijk123", defaultQty: 200, status: "A", points: 200 } );
bulk.insert( { item: "mop123", defaultQty: 0, status: "P", points: 0 } );
bulk.execute();


Подробнее здесь
Ответ написан
Комментировать
@fAra0N25 Автор вопроса
На самом деле, все оказалось проще, видимо сказывается малое кол-во опыта.
Кода я тестил на маленьких вставках, в коллекции было мало документов 50 и меньше, то при запросе через консоль Mongo, через RobotoMongo, и через moongose документы возвращаются в том порядке, в каком вставлены, а когда в коллекции больше документов(было 15к), то выборка происходит с конца коллекции(findOne в mongoose, find в Monogo console, и через RobotoMongo).
Решил тем что добавил поле created и добавил к запросу sort:{created: 1}, т.е. во возрастанию. Временно решил проблему.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы