美文网首页
MongoDB v4.0 命令

MongoDB v4.0 命令

作者: Zzzang | 来源:发表于2019-09-30 10:48 被阅读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 也可以用来进行关联查询

    相关文章

      网友评论

          本文标题:MongoDB v4.0 命令

          本文链接:https://www.haomeiwen.com/subject/kyucpctx.html