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");
}