删除文档
概述
在本指南中,您可以学习如何使用删除操作从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)
每个文档都包含一个关于书籍的描述,包括标题、作者和页数,分别对应每个文档中的 title
、author
和 length
字段。
提示
不存在的数据库和集合
如果您在执行写操作时所需的数据库和集合不存在,服务器将隐式创建它们。
删除操作
使用 删除操作 从 MongoDB 中删除数据。删除操作包括以下方法:
DeleteOne()
,用于删除 第一个匹配的文档DeleteMany()
,用于删除 所有 匹配的文档
提示
当运行 DeleteMany()
方法时,如果有一个文档匹配您的过滤器,则相当于运行了 DeleteOne()
方法。
参数
DeleteOne()
和 DeleteMany()
方法期望您传递一个 Context
类型和一个 非空
查询过滤器,指定要匹配的文档。
它们都可选地接受一个 DeleteOptions
类型作为第三个参数,它代表您可以使用它来配置删除操作。如果您不指定 DeleteOptions
,驱动程序将使用每个选项的默认值。
DeleteOptions
类型允许您使用以下方法配置选项
方法 | 描述 |
---|---|
SetHint() | 用于扫描要删除的文档的索引。 默认值: nil |
SetCollation() | 在排序结果时使用的语言排序类型。 默认值: nil |
返回值
DeleteOne()
和 DeleteMany()
方法返回一个 DeleteResult
类型。该类型包含 DeletedCount
属性,表示删除的文档数。如果没有匹配到您的过滤器,则不会删除任何文档,并且 DeletedCount
为 0
。
示例
以下示例使用 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 文档
要了解本指南中讨论的任何方法或类型,请参阅以下 API 文档