• MongoDB v4.0 命令


    MongoDB v4.0 命令

    官方文档 > 点这里 <

    操作系统库

    #操作管理员库
    use admin
    #鉴权
    db.auth("root","admin");
    #用户查看(格式美化)
    db.system.users.find().pretty();
    
    #新增用户
    db.createUser({
        user: 'root1',
        pwd: 'admin1',
        roles: [ { role: "dbOwner", db: "yapi" }]
    });
      
    #更新用户信息/密码/权限
    db.updateUser("root1",{
        pwd: "admin2",
        roles:
        [{
            role: "root",
            db: "admin"
          },{
            role: "userAdminAnyDatabase",
            db: "admin"
          },{
            role: "readWriteAnyDatabase",
            db: "admin"
          },{
            role: "dbAdminAnyDatabase",
            db: "admin"
    }]})
    
    #删除数据库所属用户
    db.dropUser("root1");
    

    操作自定义库

    #操作自定义库
    use persionalDB
    
    #鉴权
    db.auth("user","pwd");
    
    #创建数据库所属用户
    db.createUser({
        user: 'username1',
        pwd: 'password1',
        roles: [ { role: "dbOwner", db: "yapi" }]
    });
      
    #更新用户信息/密码/权限
    db.updateUser("username1",{
        pwd: "NEW pass",
        roles:
        [{
            role: "root",
            db: "admin"
          },{
            role: "userAdminAnyDatabase",
            db: "admin"
          },{
            role: "readWriteAnyDatabase",
            db: "admin"
          },{
            role: "dbAdminAnyDatabase",
            db: "admin"
    }]});
    
    #删除数据库所属用户
    db.dropUser("username1");
    

    1.0.0 基础操作 [collection]= 所查集合名

    use [db_name];
    
    db.[collection].insert({[title]:'[value]'});
    eg: 
        db.hellocollction.insert({name:'hello'});
    
    # 单个插入
    db.inventory.insertOne(
       { item: "canvas", 
         qty: 100, 
         tags: ["cotton"], 
         size: { 
                h: 28, 
                w: 35.5, 
                uom: "cm" 
            } 
        }
    )
    # 批量插入
    db.inventory.insertMany([
       { item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },
       { item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
       { item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
    ])
    

    1.1 >增<

    • db.[collection].insertOne()/insertMany()

    title

    1.2 >查<

    • db.[[collection]].find()

    title

    1.3 >改<

    • db.[collection].updateOne()/updateMany()/replaceOne()

    title

    1.4 >删<

    • db.collection.deleteOne()/deleteMany()

    title

    2.0 高级: 联表查询 Join

    初始数据

    db.product.insert({"_id":1,"productname":"商品1","price":15});
    db.product.insert({"_id":2,"productname":"商品2","price":36});
     
    db.order.insert({"_id":1,"pid":1,"ordername":"订单1","uid":1});
    db.order.insert({"_id":2,"pid":2,"ordername":"订单2","uid":2});
    db.order.insert({"_id":3,"pid":2,"ordername":"订单3","uid":2});
    db.order.insert({"_id":4,"pid":1,"ordername":"订单4","uid":1});
     
    db.user.insert({"_id":1,"username":1});
    db.user.insert({"_id":2,"username":2});
     
    db.product.find();
    db.order.find();
    db.user.find();
    

    2.1 $lookup 两表关联join

    db.product.aggregate([
        {
          $lookup:
            {
              from: "order",
              localField: "_id",
              foreignField: "pid",
              as: "inventory_docs"
            }
       }
    ]);
    #结果:
    {
        "_id" : 1.0,
        "productname" : "商品1",
        "price" : 15.0,
        "inventory_docs" : [
            {
                "_id" : 1.0,
                "pid" : 1.0,
                "ordername" : "订单1"
            },
            {
                "_id" : 4.0,
                "pid" : 1.0,
                "ordername" : "订单4"
            }
        ]
    }
    

    lookup 就是使用 aggregate 的 $lookup 属性,$lookup 操作需要一个四个参数的对象:

    • localField:在输入文档中的查找字段
    • from:需要连接的集合
    • foreignField:需要在from集合中查找的字段
    • as:输出的字段名字

    2.2 $lookup 三表关联join

    db.order.aggregate([
        {
            "lookup": {
                "from": "product",
                "localField": "pid",
                "foreignField": "_id",
                "as": "inventory_docs"
            }
        },{
            "lookup": {
                "from": "user",
                "localField": "uid",
                "foreignField": "_id",
                "as": "user_docs"
            }
        }
    ]);
    

    除了 $lookup,populate 也可以用来进行关联查询

  • 相关阅读:
    锚点定位跳转的各种实现方法
    css 布局之定位 相对/绝对/成比例缩放
    闭包,jQuery插件的写法:图片预加载
    mui 常见的效果
    根据浏览器内核判断是web/iOS/android/ipad/iphone 来打开不同的网站或页面
    有字库API方法使用一二
    tab 切换实现方法
    在线图片上传、预览、裁切、放大、缩小之 cropbox.js 的应用
    html + css3 demo
    jsfiddle 使用教程
  • 原文地址:https://www.cnblogs.com/Zzang/p/11611490.html
Copyright © 2020-2023  润新知