文档菜单
文档首页
/ / /
Go 驱动程序
/ / /

删除文档

在本页

  • 概述
  • 示例数据
  • 删除操作
  • 参数
  • 返回值
  • 其他信息
  • API文档

在本指南中,您可以学习如何使用删除操作从MongoDB集合中删除文档。

本指南中的示例使用以下内容Book 结构作为 books 集合中文档的模型

type Book struct {
Title string
Author string
Length int32
}

要运行本指南中的示例,请使用以下代码片段将示例数据加载到 db.books 集合中

coll := client.Database("db").Collection("books")
docs := []interface{}{
Book{Title: "Atonement", Author: "Ian McEwan", Length: 351},
Book{Title: "My Brilliant Friend", Author: "Elena Ferrante", Length: 331},
Book{Title: "Lucy", Author: "Jamaica Kincaid", Length: 103},
Book{Title: "Outline", Author: "Rachel Cusk", Length: 258},
}
result, err := coll.InsertMany(context.TODO(), docs)

每个文档都包含一个关于书籍的描述,包括标题、作者和页数,分别对应每个文档中的 titleauthorlength 字段。

提示

不存在的数据库和集合

如果您在执行写操作时所需的数据库和集合不存在,服务器将隐式创建它们。

使用 删除操作 从 MongoDB 中删除数据。删除操作包括以下方法:

  • DeleteOne(),用于删除 第一个匹配的文档

  • DeleteMany(),用于删除 所有 匹配的文档

提示

当运行 DeleteMany() 方法时,如果有一个文档匹配您的过滤器,则相当于运行了 DeleteOne() 方法。

DeleteOne()DeleteMany() 方法期望您传递一个 Context 类型和一个 非空 查询过滤器,指定要匹配的文档。

它们都可选地接受一个 DeleteOptions 类型作为第三个参数,它代表您可以使用它来配置删除操作。如果您不指定 DeleteOptions,驱动程序将使用每个选项的默认值。

DeleteOptions 类型允许您使用以下方法配置选项

方法
描述
SetHint()
用于扫描要删除的文档的索引。
默认值: nil
SetCollation()
在排序结果时使用的语言排序类型。
默认值: nil

DeleteOne()DeleteMany() 方法返回一个 DeleteResult 类型。该类型包含 DeletedCount 属性,表示删除的文档数。如果没有匹配到您的过滤器,则不会删除任何文档,并且 DeletedCount0

以下示例使用 DeleteMany() 方法执行以下操作

  • 匹配并删除长度大于 300 的文档

  • 指示方法使用 _id 作为索引

filter := bson.D{{"length", bson.D{{"$gt", 300}}}}
opts := options.Delete().SetHint(bson.D{{"_id", 1}})
result, err := coll.DeleteMany(context.TODO(), filter, opts)
if err != nil {
panic(err)
}
fmt.Printf("Number of documents deleted: %d\n", result.DeletedCount)
Number of documents deleted: 2

提示

如果前面的示例使用的是 DeleteOne() 方法而不是 DeleteMany(),则驱动程序将删除两个匹配文档中的第一个。

有关删除操作的可用示例,请参阅以下使用示例

  • 删除文档

  • 删除多个文档

要了解更多关于执行所提操作的信息,请参阅以下指南

有关驱动程序如何使用上下文的更多信息,请参阅上下文。

有关指定提示的更多信息,请参阅索引。

有关排序规则的更多信息,请参阅排序规则。

要了解本指南中讨论的任何方法或类型,请参阅以下 API 文档

  • 删除一个

  • 删除多个

  • 删除选项

  • 删除结果

返回

插入