Delete Documents
Overview
在本指南中,您可以了解如何使用删除操作从 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
类型和 non-nil
查询筛选器,以指定要匹配的文档。
它们都可以选择性地采用 DeleteOptions
类型作为第三个参数,该参数表示可用于配置删除操作的选项。如果不指定 DeleteOptions
,驱动程序将使用各选项的默认值。
DeleteOptions
类型允许您使用以下方法配置选项:
方法 | 说明 |
---|---|
SetHint() | The index to use to scan for documents to delete. Default: nil |
SetCollation() | The type of language collation to use when sorting results. Default: nil |
返回值
DeleteOne()
和 DeleteMany()
方法返回 DeleteResult
类型。该类型包含 DeletedCount
属性,其中说明了已删除文档的数量。如果筛选器中没有匹配项,则不会删除任何文档,DeletedCount
为 0
。
例子
以下示例使用 DeleteMany()
方法执行以下操作:
匹配并删除
length
(长度)大于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 文档: