Ответ 1
Почему бы не перебирать объекты массива и вставлять их по одному?
array.forEach((item) => db.MyCollection.insert(item));
Интересно, как я мог вставить массив объектов в коллекцию Mongo "файлы на уровне корня" с собственными предопределенными значениями _id.
Я пробовал db.MyCollection.insert(array);
, но он создает вложенные документы под одним сгенерированным _id в MongoDB.
var array = [
{ _id: 'rg8nsoqsxhpNYho2N',
goals: 0,
assists: 1,
total: 1 },
{ _id: 'yKMx6sHQboL5m8Lqx',
goals: 0,
assists: 1,
total: 1 }];
db.MyCollection.insert(массив);
Что я хочу
Почему бы не перебирать объекты массива и вставлять их по одному?
array.forEach((item) => db.MyCollection.insert(item));
Пройдите эту ссылку, чтобы получить точный результат так, как вы хотите:
https://docs.mongodb.org/manual/tutorial/insert-documents/#insert-a-document
Вы можете использовать MongoDB Bulk для вставки нескольких документов в один звонок в базу данных.
Сначала перебираем массив и вызываем метод bulk
для каждого элемента:
bulk.insert(item)
После цикла вызовите execute
:
bulk.execute()
Взгляните на реферированную документацию, чтобы узнать больше.
db.collection.insertMany() - это то, что вам нужно (поддерживается с 3.2):
db.users.insertMany(
[
{ name: "bob", age: 42, status: "A", },
{ name: "ahn", age: 22, status: "A", },
{ name: "xi", age: 34, status: "D", }
]
)
выход:
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("57d6c1d02e9af409e0553dff"),
ObjectId("57d6c1d02323d119e0b3c0e8"),
ObjectId("57d6c1d22323d119e0b3c16c")
]
}