Mongodb 简单操作备忘录及Golang操作mongodb的笔记

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() {
         

你可能感兴趣的:(Golang&go+,golang,mongodb)