「这是我参与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中没有这个数据库和这个集合的话,就会自动创建的,无需我们自己再去创建集合