Удаление документов в MongoDB

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

Удалять документы в MongoDB можно различными способами. Здесь надо отметить следующие методы коллекции:

  • deleteMany(): удаляет все документы, которые соответствуют определенному критерию

  • deleteOne(): удаляет один документ, который соответствует определенному критерию

  • findOneAndDelete(): получает и удаляет один документ, который соответствует определенному критерию

  • drop(): удаляет всю коллекцию

Удаление одного документа и метод deleteOne

Метод deleteOne() удаляет только объект:

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 result = await collection.deleteOne({name: "Bob"});
		console.log(result);
		
	}catch(err) {
		console.log(err);
	} finally {
		await mongoClient.close();
	}
}
run().catch(console.error);

В качестве параметра метод deleteOne() принимает фильтр документов, которые надо удалить. Возвращает метод результат операции удаления. При этом результат удаления будет представлять объект, в котором с помощью свойства deletedCount можно увидеть количество удаленных документов:

c:\node\mongoapp>node app
{ acknowledged: true, deletedCount: 1}

c:\node\mongoapp>

Удаление нескольких объектов и метод deleteMany

Метод deleteMany() работает аналогичным образом, только удаляет все документы, которые соответствуют фильтру. Например, удалим всех пользователей, у которых имя "Tom":

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 result = await collection.deleteMany({name: "Tom"});
		console.log(result);
		
	}catch(err) {
		console.log(err);
	} finally {
		await mongoClient.close();
	}
}
run().catch(console.error);

findOneAndDelete

Метод findOneAndDelete() удаляет один документ по определенному критерию, но по сравнению с методом deleteOne() он позволяет получить удаленный документ:

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 result = await collection.findOneAndDelete({age: 21});
		console.log(result);
		
	}catch(err) {
		console.log(err);
	} finally {
		await mongoClient.close();
	}
}
run().catch(console.error);

Консольный вывод программы:

c:\node\mongoapp>node app
{
	_id: new ObjectId("6112ad050d15a6dfd6330280"),
	name: "Alice",
	age: 21
}

c:\node\mongoapp>

Из консольного вывода мы видим, что какой документ был удален.

drop

Метод drop() удаляет всю коллекцию:

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 result = await collection.drop();
		console.log(result);	// true|false
		
	}catch(err) {
		console.log(err);
	} finally {
		await mongoClient.close();
	}
}
run().catch(console.error);

Результатом метода drop является булевое значение.

Стоит отметить, что если удаляемая коллекция - единственная коллекция в базе данных, то вместе с коллекцией удаляется и вся база данных.

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