Добавление данных в MongoDB

Последнее обновление: 24.11.2023

В прошлой теме были рассмотрены некоторые базовые моменты по работе с MongoDB. Теперь более подробно рассмотрим как добавлять и получать данные из бд.

Для добавления мы можем использовать различные методы. Если нужно добавить один объект, то применяется метод insertOne(). При добавлении набора объектов можно использовать метод insertMany().

Добавление одного документа

Для добавления одного документа применяется метод insertOne(). В качестве параметра он принимает добавляемый документ. Рассмотрим на примере:

const MongoClient = require("mongodb").MongoClient;
  
const url = "mongodb://127.0.0.1:27017/";
const mongoClient = new MongoClient(url);

async function run() {
	try {
		await mongoClient.connect();
		const db = mongoClient.db("usersdb");
		const collection = db.collection("users");
		const user = {name: "Tom", age: 28};
		const result = await collection.insertOne(user);
		console.log(result);
        console.log(user);
	}catch(err) {
		console.log(err);
	} finally {
		await mongoClient.close();
	}
}
run().catch(console.error);

Добавляемый документ представляет объект. В данном случае это объект

{name: "Tom", age: 23};

То есть в коллекцию users будет добавляться документ, который имеет для свойства: name и age, которые хранят соответветственно строку "Tom" и число 23.

После добавления получаем результат операции и выводим его на консоль. Также выводим на консоль объект добавленный user, чтобы посмотреть какие изменение произошли с ним осле добавления в бд.

Результат работы программы:

c:\node\mongoapp>node app
{
	acknowledged: true,
	insertedId: new ObjectId("6112a80ca8a25160d53d161a")
}
{name: "Tom", age: 23, _id: new ObjectId("6112a80ca8a25160d53d161a")}

Здесь мы можем увидеть результат операции, в частности, с помощью свойства result. insertedId получить идентификатор добавленного объекта. Кроме того, мы видим, кроме начальных свойств документ user после добавления в БД получили дополнительное свойство _id - это уникальный идентификатор документа, который присваивается сервером при добавлении.

Добавление нескольких объектов

Теперь используем метод insertMany(). Добавим набор объектов и для этого изменим файл приложения app.js:

const MongoClient = require("mongodb").MongoClient;
  
const url = "mongodb://127.0.0.1:27017/";
const mongoClient = new MongoClient(url);

const users = [{name: "Bob", age: 35} , {name: "Alice", age: 21}, {name: "Tom", age: 45}];

async function run() {
	try {
		await mongoClient.connect();
		const db = mongoClient.db("usersdb");
		const collection = db.collection("users");
		const results = await collection.insertMany(users);
		console.log(results);
        console.log(users);
	}catch(err) {
		console.log(err);
	} finally {
		await mongoClient.close();
	}
}
run().catch(console.error);

Как и insertOne, метод insertMany() в качестве параметра принимает добавляемые данные - массив объектов, а в качестве результата возвращает результат операции. При удачном добавлении добавленные объекты из массива users аналогичным образом получат свойство _id.

Запустим приложение:

c:\node\mongoapp>node app
{
  acknowledged: true,
  insertedCount: 3,
  insertedIds: {
    '0': new ObjectId("6377874e1e1a085c14fcd12f"),
    '1': new ObjectId("6377874e1e1a085c14fcd130"),
    '2': new ObjectId("6377874e1e1a085c14fcd131")
  }
}
[
  {
    name: 'Bob',
    age: 35,
    _id: new ObjectId("6377874e1e1a085c14fcd12f")
  },
  {
    name: 'Alice',
    age: 21,
    _id: new ObjectId("6377874e1e1a085c14fcd130")
  },
  {
    name: 'Tom',
    age: 45,
    _id: new ObjectId("6377874e1e1a085c14fcd131")
  }
]

c:\node\mongoapp>

Объект результата в свойстве insertedCount содержит количество добавленных документов, а через свойство insertedIds можно получить идентификаторы добавленных документов.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850