美文网首页
mongoDB-mongosh

mongoDB-mongosh

作者: husky_1 | 来源:发表于2022-05-09 10:05 被阅读0次

    mongoDB Shell (mongosh) 是一个功能齐全的 JavaScript 和 Node.js 14.x REPL 环境,用于与 MongoDB 数据库进行交互。我们通过使用 MongoDB Shell 直接进行数据库的测试查询等操作。

    1. 安装:

    参考:https://www.mongodb.com/docs/mongodb-shell/install
    下载链接:https://www.mongodb.com/try/download/shell?jmp=docs

    2. 连接mongoDB

    以windows 版本的mongosh 为例,目前mongosh 支持mongoDB 4.0 以上的版本。

    2.1 连接可选参数
    参数 描述
    --port 数据库连接端口,默认是27017
    --host 数据库主机地址,默认为localhost
    --username 用户名
    --password 秘密
    ----authenticationDatabase 身份认证的数据库名称
    --tls 是否使用tls认证
    2.2默认端口上的本地 MongoDB 实例

    在没有任何命令行选项的情况下运行 mongosh, 是以使用默认端口 27017 连接到在本地主机上运行的 MongoDB 实例:

    $mongosh.exe
    Current Mongosh Log ID: 6273cd03c8bcf3b90714406a
    Connecting to:          mongodb://127.0.0.1:27017/?  directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.3.1
    Using MongoDB:          6.0.0-rc4
    Using Mongosh:          1.3.1
    

    等价于

    mongosh.exe "mongodb://localhost:27017"
    

    mogosh 默认连接数据库的port为27017
    指定数据库连接

    // 例: 指定名叫test的数据库
      mongosh.exe "mongodb://localhost:27017/test"
    
    2.3指定端口的本地MongoDB实例
    mongosh.exe "mongodb://localhost:28015"
    

    或者通过 --port参数指定

    mongosh.exe --port 28015
    
    2.4 远程主机上的 MongoDB 实例
    momgosh.exe "mongodb://[主机地址]:端口 "
    

    例: 远程主机地址为mongodb0.example.com,端口为:28015

    mongosh.exe "mongodb://mongodb0.example.com:28015"
    

    或者是通过--host--port参数指定远程主机

    mongosh.exe  --host mongodb0.example.com --port 28015
    
    2.5 连接到服务器副本集(replica set)

    例: 连接一个三个成员的副本集,集合叫replA :

      mongosh.exe "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA"
    
    2.6 查看当前连接:

    当mongosh 连接数据库成功后,通过如下指令查看连接状态

    $ db.geMongo()
    mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.3.1
    

    3. 操作:

    3.1 增删改查(CURD)
    3.1.1 插入
    • 插入一条document
      语法:db.collection名.insertOne()

      // 示例,在inventory 的collection 中插入一条document
      db.inventory.insertOne(
         { item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
      )
      
    • 批量插入
      语法:db.collection.insertMany(), 传入的参数是documents 数组

      // 示例
        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. 如果待插入的collection 不存在,此时会新建一个
      2. 在 MongoDB 中,存储在collection 中的每个document都需要一个唯一的 _id 字段作为主键。如果插入的文档省略了 _id 字段,MongoDB 驱动程序会自动为 _id 字段生成一个 ObjectId对象
    3.1.2 查看

    语法:db.collection名.find()

    示例: 先批量插入如下测试数据

    db.inventory.insertMany( [
     { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
     { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
     { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
     { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
     { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
    ]);
    
    • 匹配嵌套document
    3.1.3 更新
    3.1.4 删除

    相关文章

      网友评论

          本文标题:mongoDB-mongosh

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