📜  findoneanddelete id (1)

📅  最后修改于: 2023-12-03 15:15:04.326000             🧑  作者: Mango

MongoDB中的findOneAndDelete

MongoDB中的findOneAndDelete操作可以在集合中查找匹配的文档并将其删除。该操作具有原子性,即在执行操作期间,其他客户端不能访问或修改该文档。

语法
db.collection.findOneAndDelete(
   <filter>,
   {
     projection: <document>,
     sort: <document>,
     maxTimeMS: <number>,
     collation: <document>
   }
)

参数说明

  • <filter>:筛选条件,与find操作相同。
  • projection:可选,要返回的字段。
  • sort:可选,排序方式。
  • maxTimeMS:可选,操作的最长执行时间。
  • collation:可选,指定一个规则来比较字符串。
返回值

findOneAndDelete操作返回已删除的文档。如果筛选条件匹配多个文档,则只删除第一个文档。

示例
const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://<username>:<password>@<cluster>.mongodb.net/test?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
client.connect(err => {
  const collection = client.db("test").collection("myCollection");
  
  // 删除一个文档
  collection.findOneAndDelete({ name: "John" }, function(err, result) {
    console.log(result);
  });
  
  client.close();
});

以上示例中,我们删除了myCollection集合中符合条件{ name: "John" }的第一个文档,并将其打印在控制台上。

结束语

findOneAndDelete是MongoDB中非常有用的操作之一。它可以帮助开发人员快速地删除文档,而不必先查询文档,然后再将其删除。请注意,findOneAndDelete操作是原子性的,可确保在执行操作时不会出现任何其他客户端的访问或修改。