【Go开源宝藏】Go语言操作 MongoDB (一)

236 阅读2分钟

「这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战」。

1. MongoDB简介

MongDB是一款性能极强的文档数据库,可以充分利用系统的内存资源,会充分使用系统内存作为缓存。基于分布式文件存储的MongoDB由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

在MongoDB中,指定索引插入不指定慢很多,这是因为,MongoDB里每一条数据的_id值都是唯一的。

  • 当在不指定_id插入数据的时候,其_id是系统自动计算生成的。MongoDB通过计算机特征值时间进程ID随机数来确保生成的_id是唯一的。
  • 而在指定_id插入时,MongoDB每插一条数据,都需要检查此_id可不可用,当数据库中数据条数太多的时候,这一步的查询开销会拖慢整个数据库的插入速度

MongoDB不指定_id插入 > MySQL不指定主键插入 > MySQL指定主键插入 > MongoDB指定_id插入

2. Go连接MongoDB

驱动:go.mongodb.org/mongo-driver/mongo

  • 定义一个mongoDB的一个client
var MongoDBClient *mongo.Client
  • 连接mongoDB
clientOptions := options.Client().ApplyURI("mongodb://" + "localhost" + ":" + "27017")
var err error
MongoDBClient, err = mongo.Connect(context.TODO(), clientOptions)
// 链接
if err != nil {
	fmt.Println(err)
}
err = MongoDBClient.Ping(context.TODO(), nil) 
// 测试连接
if err != nil {
	fmt.Println(err)
}
  • 链接MongoDB数据库
var Collection *mongo.Collection // 声明一个集合
Collection = MongoDBClient.Database("practice").Collection("user") 
// 链接practice这个数据库中的user集合

MongoDB数据库 ---> MySQL数据库 MongoDB的Collection集合 ---> MySQL表

注意一点:这时候如果MongoDB中没有这个数据库和这个集合的话,就会自动创建的,无需我们自己再去创建集合

在这里插入图片描述