Overview
在本指南中,您可以学习;了解如何使用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 文档
要进一步了解本指南所讨论的任何类型或方法,请参阅以下 API 文档: