MongoDB Shell工具:mongosh的使用

本文详细介绍了如何使用MongoDB的Shell工具mongosh进行数据库的连接、创建、读取、更新和删除操作。包括安装mongosh,启动MongoDB服务,连接MongoDB实例,创建和删除数据库,操作集合以及插入、删除和更新文档。此外,还讲解了集合的创建、查看和删除,以及文档的CRUD操作,是MongoDB初学者的实用教程。
摘要由CSDN通过智能技术生成
MongoDB Shell工具:mongosh的使用

jcLee 的 CSDN 博客
邮箱 :291148484@163.com
CSDN 主页https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343
本文地址https://blog.csdn.net/qq_28550263/article/details/119892582

目 录

1. 使用前的准备

2. 使用mongosh连接实例

3. 创建、读取、更新和删除(CURD)操作


1. 使用前的准备

1.1 安装 mongosh

MongoDB的Shell工具mongosh是一个全功能的JavaScript和Node.js的14.x REPL与MongoDB的部署交互环境。我们通过它可以直接对数据库进行查询和操作。这个工具是需要在安装玩MongoDB后单独安装的,Windows平台对应的mongosh的下载地址为:

当然你也可以自己在MongoDB下载页面寻找对应的版本进行下载:

下载完成后,进行安装,基本只要点击下一步即可:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 启动 MongoDB

因为之后我们使用mongosh来连接MongoDB实例,因此先要对 MongoDB进行启动。启动主要有两种方式。

(1)在bin目录中直接使用如下命令启动:
找到你的安装目录下的bin目录,如果你还没有将该目录添加到Path环境变量下,那么你需要通过命令行进入到该目录后才能执行相关命令。
在这里插入图片描述
命令如下:

 mongod --dbpath="D:\Program Files\MongoDB\Server\5.0\data"

注意中间不要有空格。右面--dbpath选项所指定的就是你的数据库存放目录。
(2)通过配置文件进行启动:
有两种写法,一种是 -f选项加路径,如

mongod -f ../config/mongod.conf

另外一种写法是 --config选项加路径,如

mongod --config ../config/mongod.conf

配置文件的格式如:

systemLog:
    destination: file
    #The path of the log to which mongod or mongos should send all diagnostic logging information
    path: "D:/Program Files/MongoDB/Server/5.0/log/mongo.log"
    logAppend: true
storage:
    journal:
        enabled: true
    # the directory where the mongod instance stores its data.Default Value is "/data/db".
    dbPath: D:\Program Files\MongoDB\Server\5.0\data
net:
    bindIp: 127.0.0.1

2. 使用mongosh连接实例

一般的链接命令格式为:

mongosh "mongodb://hostname:port"

本地 MongoDB 实例使用 默认端口 27017 ,在mongosh没有任何命令行选项的情况下可以直接简写为一下命令进行连接:

mongosh

这相当于使用命令:mongosh "mongodb://localhost:27017"
一下时一次连接到本地实例的截图:
在这里插入图片描述

3. 创建、读取、更新和删除(CURD)操作

3.1 数据库的创建

创建或插入操作将新文档添加到集合中。如果该集合不存在,则创建操作也会创建该集合。可以在一次操作中插入单个文档或多个文档。

mongo

3.1.1 选择和创建数据库

use 数据库名

注意:使用该命令的时候,如果有数据库名称指定的数据库则会使用该数据库,否则将自动创建名称为所指定名称的数据库。
数据库名需要满足一定的规则:

  • 它可以是任意满足UTF-8编码的字符串;
  • 不允许是空字符串;
  • 不允许含有’ '(空格)、.(点)、$、/、\、和\0(空字符串);
  • 应采用全小写字符,并且布草过64字节;
  • 不能使用一些暴力与的数据库名:
    • admin: 这个相当于具有root权限的数据库,要是将一个用户添加到该数据库,则用户将自动地继承所有数据库的权限。某些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器等等;
    • local: 该数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合;
    • config: 当Mongo用于分片设置时,config数据库再内部使用,用于保存分片的相关信息。

也可以查看当前所使用的数据库:

db

查看所有的数据库:

show dbs

(或者show databases

执行效果如图:
在这里插入图片描述
在这个截图中看到,并没有显示出我们使用use命令所创建的数据库“mydb”,是因为我们还没有把它存储在硬盘中,但这个新的数据库已经可以在内存中建立了。

其中MondoDB中所默认的数据库名为test,也就是说如果你没有指定过其他名称的数据库,所使用的集合将全部存放在名为test的默认数据库中。

在创建数据库后集合不会马上创建,只有在插入了内容后才会创建集合。这里的集合就相当于MySQL等数据库中的数据表。也就是说创建集合后要再插入一个文档(相当于MySQL中的记录),集合才会创建。

3.2 数据库的删除

删除操作从集合中删除现有文档。您可以在一次操作中删除单个文档或多个文档。可以指定用于标识要删除的文档的条件或过滤器。这些过滤器使用与读取操作相同的语法。
MongoDB删除数据库shell的格式为:

db.dropDatabase()

这里的Shell命令与JavaScript中的函数类似,以该删除函数为例,db是我们所use的一个数据库对象,执行的是该对象的dropDatabase()函数(方法)。不过需要注意,mongosh方法终究不是Node.js或者某一其他编程语言中的方法或函数。现在我们可以测试删除刚刚所创建的数据库:
在这里插入图片描述
这个也只是对硬盘中的数据库的操作,实际上现在我们所“use”的还是mydb。

3.3 集合操作

3.3.1 集合的创建

这里的集合就相当于MySQL等关系型数据库中的数据表,集合是“文档”的容器,而文档则相当于MySQL等关系型数据库中的“记录”,也就是所存储的一条数据。为当前所使用的数据库“db”显示创建一个集合的格式如下:

db.createCollection(name)
  • name 该参数是要为当前所使用的数据库db创建的集合的名称,需要使用引号表示名称的字符串,如:
    db.createCollection("mydb")
    

实际上“集合”还可以被隐式地创建。当向一个集合中插入一个文档时,若被插入文档的集合不存在,则将自动创建该集合

3.3.2 查看所有集合

其命令如下:

show collections

如图:
在这里插入图片描述

3.3.3 集合的删除

删除集合的格式为:

db.collection.drop()

或者

db.集合名.drop()

3.4 文档操作

3.4.1 文档的插入

(1)插入单个文档
db.collection.insertOne()

例如:

db.students.insertOne( { name: "小明", age: 16 } );

以下是shell执行的截图:
在这里插入图片描述
可以看到mongosh返回了一段脚本执行的信息,即:

{
        "acknowledged" : true,
        "insertedId" : ObjectId("6125ae05d3b72d0dd071b02f")
}

说明我们执行成功了。使用可视化工具也可以查看到在当前使用的名为test数据库下,名为student的集合下添加了一个文档:
在这里插入图片描述

(2)插入多个文档

我们也可以一次性插入多个文档:

db.collection.insertMany()
```例如:
```js
 db.techers.insertMany( [ { name: "JackMa", age: 57 }, { name: "Michael Yu", age: 59 } ] );

在这里插入图片描述在这里插入图片描述

3.4.2 从集合中删除文档

MongoDB中的删除操作有两种,一个是db.collection.deleteOne(),用于从集合中删除单个文档;另一个是db.collection.deleteMany(),用于按照某种规则删除多个文档。他们都是针对单个集合的删除

(1)db.collection.deleteOne()

格式为:

db.collection.deleteOne(
   <filter>,
   {
      writeConcern: <document>,
      collation: <document>,
      hint: <document|string>        // Available starting in MongoDB 4.4
   }
)

其中:

  • filter :过滤器,用于指定删除条件。相当于SQL中使用where语句。db.collection.deleteOne()方法将 删除与过滤器匹配的第一个文档。如果需要精确删除某一条文档,应该使用属于唯一索引一部分的字段,比如_id

  • writeConcern(可选):它关注描述了从 MongoDB 请求对独立mongod或副本集或分片集群的写入操作的确认级别。

  • collation(可选):它指定了用于操作的排序规则。排序规则允许用户 为字符串比较指定特定于语言的规则,例如字母和重音符号的规则。

  • hint(可选):hint指定用于支持查询谓词的 索引 的文档或字符串。该选项可以采用索引规范文档索引名称字符串。如果指定的索引不存在,则操作会出错。

    索引 是一种特殊的数据结构,它以易于遍历的形式存储集合数据集的一小部分,用于支持在 MongoDB 中高效执行查询。

    • 如果没有索引则MongoDB 必须执行集合扫描,即扫描集合中的每个文档,以选择那些与查询语句匹配的文档。
    • 如果查询存在合适的索引,MongoDB 可以使用该索引来限制它必须检查的文档数量。

    (MongoDB 索引使用 B 树数据结构)

> db
test
> db.students.insertMany([
...     { "_id": 1, "name":"三张", "age":12, "chinaese":90,  "math" : 67, "english" : 59 },
...     { "_id": 2, "name":"李四", "age":13, "chinaese":83,  "math" : 69, "english" : 70 },
...     { "_id": 3, "name":"王五", "age":15, "chinaese":97,  "math" : 73, "english" : 57 },
...     { "_id": 4, "name":"赵六", "age":11, "chinaese":86,  "math" : 82, "english" : 70 },
...     { "_id": 5, "name":"钱七", "age":15, "chinaese":99,  "math" : 61, "english" : 60 },
...     { "_id": 6, "name":"吴八", "age":14, "chinaese":91,  "math" : 67, "english" : 86 }])
{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3, 4, 5, 6 ] }

建立索引:

db.students.createIndex( { chinaese: 1, _id: -1 } )
{
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "createdCollectionAutomatically" : false,
        "ok" : 1
}

删除操作使用一个索引:


(2)db.collection.deleteMany()
  • 22
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jcLee95

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值