📜  MongoDB – findOneAndDelete() 方法(1)

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

MongoDB – findOneAndDelete() 方法

简介

findOneAndDelete() 是 MongoDB 中用于删除符合指定条件的文档的方法之一。它可以查询集合中的文档并删除第一个符合条件的文档。这个方法可以根据需要将被删除的文档返回给调用者,同时也可以应用于复杂的查询条件。

语法

findOneAndDelete() 方法的语法如下所示:

db.collection.findOneAndDelete(
   <filter>,
   {
      projection: <document>,
      sort: <document>
   }
)
参数
  • <filter>: 可选参数,用于指定需要删除的文档的查询条件。
  • projection: 可选参数,用于指定要返回的字段。
  • sort: 可选参数,用于指定结果的排序规则。
示例

假设我们有一个名为 users 的集合,其中包含以下文档:

{
   _id: 1,
   name: "John",
   age: 25
},
{
   _id: 2,
   name: "Jane",
   age: 30
},
{
   _id: 3,
   name: "Bob",
   age: 35
}
示例 1:删除符合条件的文档

我们可以使用 findOneAndDelete() 方法来删除符合条件的文档。假设我们要删除年龄为 30 的文档,可以执行以下操作:

db.users.findOneAndDelete({ age: 30 })

该操作将删除符合条件的第一个文档,并返回被删除的文档:

{ "_id": 2, "name": "Jane", "age": 30 }
示例 2:删除并返回指定字段的文档

我们可以使用 projection 参数来选择要返回的字段。例如,假设我们只想返回被删除文档的姓名字段:

db.users.findOneAndDelete(
   { age: 35 },
   { projection: { name: 1 } }
)

该操作将删除年龄为 35 的文档,并返回被删除文档的姓名字段:

{ "_id": 3, "name": "Bob" }
示例 3:删除并按指定排序规则返回文档

我们可以使用 sort 参数来指定返回结果的排序规则。例如,假设我们要按年龄倒序返回被删除文档:

db.users.findOneAndDelete(
   { age: { $gt: 25 } },
   { sort: { age: -1 } }
)

该操作将删除年龄大于 25 的文档,并按照年龄倒序返回被删除文档:

{ "_id": 3, "name": "Bob", "age": 35 }
结论

findOneAndDelete() 方法是 MongoDB 中用于删除符合指定条件的文档的有用工具。它允许我们根据需要删除文档,并根据查询条件、字段选择和排序规则来返回被删除的文档。使用此方法可以有效管理集合中的数据。