Работает ли вставка нескольких документов в коллекции Meteor так же, как чистый mongodb?
Кажется, я не могу сделать множественную вставку в Meteor так же, как описанный здесь в документации Mongodb...
В моей консоли js:
> Test.insert([{name:'hello'},{name:'hello again'}])
Он возвращает
"g3pq8GvWoJiWMcPkC"
И когда я иду
Test.find().fetch()
Я получаю следующее:
Object
0: Object
name: "hello"
__proto__: Object
1: Object
name: "hello again"
__proto__: Object
_id: "g3pq8GvWoJiWMcPkC"
__proto__: Object
Кажется, Meteor создает супер-документ, охватывающий два, которые я пытаюсь вставить как отдельные.
Может ли кто-нибудь сказать мне, что я здесь делаю неправильно?
Ответы
Ответ 1
В примере кода Meteor leader похоже, вы не можете вставлять вставки. Вы можете либо использовать итерационную функцию цикла или подчёркивания.
Использование подчеркивания,
var names = [{name:'hello'},{name:'hello again'}]
_.each(names, function(doc) {
Test.insert(doc);
})
Ответ 2
Вы всегда должны использовать объемную вставку для этих целей.
Метеор не поддерживает это из коробки.
Вы можете использовать плагин пакетной вставки или получить доступ к драйверу node Mongodb, чтобы сделать это изначально:
var items = [{name:'hello'},{name:'hello again'}],
testCollection = new Mongo.Collection("Test"),
bulk = testCollection.rawCollection().initializeUnorderedBulkOp();
for (var i = 0, len = items.length; i < len; i++) {
bulk.insert( items[i] );
}
bulk.execute();
Обратите внимание, что это работает только на mongoDB 2.6 +