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" } } ])
注意:
- 如果待插入的collection 不存在,此时会新建一个
- 在 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 删除
- 改
- 查
- 删