Node.js - MongoDB Delete



Node.js 的 mongodb 驱动程序在 Collection 类中包含两个方法。deleteOne() 方法删除一个文档,而 deleteMany() 方法用于一次删除多个文档。这两种方法都需要一个过滤器参数。


 collection.deleteOne(filter);

请注意,如果有多个文档满足给定的筛选条件,则只会删除第一个文档。

deleteOne()

在以下示例中。deleteOne() 方法从产品集合中删除一个文档,其名称字段与 TV 匹配。


const {MongoClient} = require('mongodb');
async function main(){

	 	const uri = "mongodb://localhost:27017/";
	 	const client = new MongoClient(uri);

	 	try {
	 	 	 await client.connect();
	 	 	 await deldocs(client, "mydb", "products");
	 	} finally {
	 	 	 await client.close();
	 	}
}

main().catch(console.error);


async function deldocs(client, dbname, colname){
	 	var myqry = { Name: "TV" };
	 	const result = await client.db(dbname).collection(colname).deleteOne(myqry);
	 	console.log("Document Deleted");
}

使用 MongoCompass(或 MongoShell)验证在执行上述代码后是否已删除预期的文档。

deleteMany()

deleteMany() 方法也使用 filter 参数。但是,它会导致所有满足指定条件的文档都将被删除。

在上面的代码中,更改 deldocs() 函数,如下所示。它会导致价格为 >10000 的所有文档都被删除。


async function deldocs(client, dbname, colname){
	 	var myqry = {"price":{$gt:10000}};
	 	const result = await client.db(dbname).collection(colname).deleteMany(myqry);
	 	console.log("Documents Deleted");
}

drop()

您可以使用 drop() 方法从数据库中删除集合。


const {MongoClient} = require('mongodb');

async function main(){

	 	const uri = "mongodb://localhost:27017/";
	 	const client = new MongoClient(uri);

	 	try {
	 	 	 await client.connect();
	 	 	 await dropcol(client, "mydb", "products");
	 	} finally {
	 	 	 await client.close();
	 	}
}
main().catch(console.error);


async function dropcol(client, dbname, colname){
	 	const result = await client.db(dbname).collection(colname).drop();
	 	console.log("Collection dropped ");

}

还有一个 dropCollection() 方法可用于 db 对象。


const {MongoClient} = require('mongodb');
async function main(){
	 	
		 	const uri = "mongodb://localhost:27017/";
	 	const client = new MongoClient(uri);

	 	try {
	 	 	 await client.connect();
	 	 	 await dropcol(client, "mydb", "orders");
	 	} finally {
	 	 	 await client.close();
	 	}
}

main().catch(console.error);

async function dropcol(client, dbname, colname){
	 	const result = await client.db(dbname).dropCollection(colname);
	 	console.log("Collection dropped");
}