Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs 菜单
Docs 主页
/ / /
Go 驱动程序

数据库和集合

在本指南中,您可以学习;了解如何使用Go驾驶员与MongoDB数据库和集合交互。

MongoDB 将数据组织成以下级别的层次结构:

  • 数据库: MongoDB 部署中用于存储集合的顶级数据结构。

  • 集合: MongoDB文档组。 它们类似于关系数据库中的表。

  • 文档:存储字符串、数字、日期和其他嵌入式文档等字面数据的单位。有关文档字段类型和结构的更多信息,请参阅MongoDB Server手册中的 文档 条目。

您可以在 Client实例上使用 Database() 方法来访问权限数据库。

以下示例将访问名为test_database的数据库:

database := client.Database("test_database")

您可以在 Database实例上使用 Collection() 方法来访问权限集合。

以下示例访问名为 test_collection 的集合:

collection := database.Collection("test_collection")

提示

如果提供的集合名称在数据库中尚不存在,则当您首次向其中插入数据时,MongoDB 会隐式创建该集合。

要显式创建集合,可以在 Database实例上使用 CreateCollection() 方法。

以下示例创建了一个名为example_collection的collection:

err = database.CreateCollection(context.TODO(), "example_collection")
if err != nil {
log.Fatalf("Failed to create collection: %v", err)
}

您可以通过将 options.CreateCollectionOptions 结构体传递给 Database实例的 CreateCollection() 方法来指定集合选项,例如最大大小和文档验证规则。有关可选参数的完整列表,请参阅MongoDB Server手册中的create 命令条目。

您可以对 Database实例使用 ListCollections() 方法,以查询数据库中的集合列表。

以下示例获取数据库中所有集合的列表,然后将集合名称打印到控制台:

cursor, err := database.ListCollections(context.TODO(), bson.D{})
if err != nil {
log.Fatalf("Failed to list collections: %v", err)
}
defer cursor.Close(context.TODO())
for cursor.Next(context.TODO()) {
var collectionInfo bson.M
if err := cursor.Decode(&collectionInfo); err != nil {
log.Fatalf("Failed to decode collection info: %v", err)
}
if name, ok := collectionInfo["name"].(string); ok {
fmt.Println(name)
} else {
log.Println("Collection name not found or not a string")
}
}
if err := cursor.Err(); err != nil {
log.Fatalf("Cursor error: %v", err)
}

您可以在 Database实例上使用 Drop() 方法来删除集合。

以下示例删除名为 test_collection 的集合:

err = database.Collection("test_collection").Drop(context.TODO())
if err != nil {
log.Fatalf("Failed to drop collection: %v", err)
}

警告

删除集合会删除该集合中的所有数据

从数据库中删除集合会永久删除该集合中的所有文档和所有索引。

仅当不再需要某个集合中的数据时才删除该集合。

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

后退

上下文包

在此页面上