Mongodb 简单操作备忘录及Golang操作mongodb
mondodb是用docker启动的
docker run -p 27018:27017 --name mongo_1 -v D:/Docker/mongo/db:/bitnami/mongodb/data/db -v D:/Docker/logs:/opt/bitnami/mongodb/logs -d bitnami/mongodb:4.4
或者
docker run -p 27018:27017 --name mongo_1 -d bitnami/mongodb:4.4
Shell
-
库
show dbs; # 查看所有的库 db; # 当前库 默认是test库 use mydb; # 使用指定的库 或者新建库并使用 db.dropDatabase() # 删除当前库
当使用了 use mydb;之后 ,db代表的就是当前库
-
集合(相当于表)
db.createCollection("myCollection") # 新建集合 db.myCollection.insert({ title:"",auth:"",content:"",comment:""}) # 指定集合中插入数据,如果集合不存在就会新建集合 返回id值 show collections; # 查看当前库中的集合 db.mycollection.drop() # 删除当前库中指定的集合
-
增
# 新增一条 db.mycollection.insertOne(document) # 新增 db.mycollection.insert(document) # 如果主键重复会报错,不保存当前记录 # 新增多条 db.mycollection.insertMany([document,document1,...])
-
删
db.mycollection.remove(query) # 删除满足查询条件的记录 db.mycollection.remove({ }) # 清空集合
-
改
db.mycollection.update(query,update,config) # query 查询需要修改的记录 # update 更新操作 # config 设置 # upsert 可选 bool 不存在就新增,默认是false 不新增 # muti 可选 bool 是否修改多条记录 update = { $set:{ "name":"新的name"}}
-
查
db.mycollection.find() # 查全部数据 db.mycollection.find(query) # 根据条件查询 # 查询条件 query = { "count":{ $gt:1}} # count > 1 # 查询的语法 对象的模式 {"字段":{条件,条件值}} query = { "title":"等于匹配"} # title = "等于匹配" query = { "count":{ $gt:10}} # $gt 大于 # $lt 小于 # $eq 等于 # $lte 小于等于 # $gte 大于等于 # $ne 不等于 # $or query = { $or:[{ name:"Lily"},{ name:"lily"}]}
-
根据字段类型查询
query = { name:{ $type:'string'}} # name字段的类型是字符串的记录 也可以是2 query = { age:{ $type:16}} # 16 是32位整数类型
-
limit
db.mycollection.find().limit(10)
-
skip
db.mycollection.find().limit(10).skip(1) #相当于sql中的offset
-
sort
db.mycollection.find().sort({ 排序字段:1}) # 1 正序 -1 反序
-
分组聚合
db.mycollection.aggregate([{ $group:{ _id:"$分组字段",汇总字段展示名称:{ $sum:1}}}]) # 分组求总数 db.mycollection.aggregate([{ $group:{ _id:"$col",num:{ $avg:"$likes"}}}])
-
go.mongodb.org/mongo-driver
-
获取客户端
ctx, cancel := context.WithTimeout(context.Background(), time.Second*60) defer cancel() // 设置客户端连接配置 clientOptions := options.Client().ApplyURI("mongodb://localhost:27017") // 连接到MongoDB client, err := mongo.Connect(ctx, clientOptions) if err != nil { fmt.Println(err) } defer func(