Массовая вставка из массива в консоль mongodb JavaScript - PullRequest
4 голосов
/ 03 марта 2011

Я пытаюсь сделать массовую вставку из консоли MongoDB массива в коллекцию.

Я хотел бы сделать что-то похожее на это.

obj1= {_id: ObjectId (), blabla: 1};

obj2 = {_id: ObjectId (), blabla: 2};

objs = [obj1, obj2];

db.test.insert (objs);

db.test.find ()

> {"_id": ObjectId ("xxxx"), "blabla": 1}> {"_id": ObjectId ("xxxx"), "blabla": 2}

Но вместо вставки двух объектов в коллекцию сохраняется один список с двумя объектами.

db.test.find ()

> {"_id": ObjectId ("xxx"), "0": {"_ id": ObjectId ("xxxx"), "blabla": 1}, "1": {"_ id": ObjectId ("xxxx"), "blabla": 2}}

Эта функциональность присутствует в других драйверах (например, pymongo ), но я не могу найти способ сделать это с консоли mongodb в коде JavaScript.

Ответы [ 6 ]

12 голосов
/ 03 октября 2012

Функция вставки нескольких документов в собрание была добавлена ​​в командную оболочку Mongo версии 2.1+.Теперь Вы можете вставить и массив документов в свою коллекцию.

Пример:

db.users.insert([{name:'Jon', email:'Jon_Doe@mail.com'},{name:'Jane', email:'Jane_Doe@mail.com'}])

Для получения дополнительной информации посмотрите запрос закрытых функций jira:

https://jira.mongodb.org/browse/SERVER-3819

https://jira.mongodb.org/browse/SERVER-2395

2 голосов
/ 03 марта 2011

Для этого существует запрос функции.http://jira.mongodb.org/browse/SERVER-2429

1 голос
/ 14 декабря 2014

Массовая доступна в 2.6.6.

var bulk=db.posts.initializeUnorderedBulkOp() ;
bulk.insert(obj1) ; bulk.insert(obj2);...

bulk.execute() ;
1 голос
/ 16 июня 2011
objs.forEach(function(obj) { db.test.insert(obj) });
0 голосов
/ 29 августа 2012

Вы не можете выполнить массовую вставку через командную оболочку.Но есть инструмент командной строки, который поставляется вместе с Mongo, который позволяет вам импортировать несколько записей в формате JSON (ваш лучший вариант), CSV или двоичный.

> mongoimport -h <host> -d <database> -c <collection> -u <user> -p <password> --file <input file> --jsonArray

Флаг jsonArray позволит вам вставить несколькозаписи при использовании файла массива json.Еще одно важное замечание - убедитесь, что файл заканчивается символом новой строки.В противном случае последняя строка не будет проанализирована.

0 голосов
/ 03 марта 2011

Короче говоря: на уровне консоли mongo нет такого API массового ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...