MongoDB Shell工具:mongosh的使用

MongoDB Shell工具:mongosh的使用MongoDBShell 工具 mongosh 的使用 CSDN 用户名 jcLee95Mongo 的 Shell 工具 mongosh 是一个全功能的 JavaScript 和 Node js 的 14 xREPL 与 MongoDB 的部署交互环境 我们通过它可以直接对数据库进行查询和操作 这个工具是需要在安装玩 MongoDB 后单独安装的 Windows 平台对应的 mongosh 的下载地址为 https downloads mongodb com compass mongosh 1 0 5 x64 msi 当然你



MongoDB Shell工具:mongosh的使用


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


目 录


1. 使用前的准备

2. 使用mongosh连接实例

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


1. 使用前的准备

1.1 安装 mongosh

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

  • https://downloads.mongodb.com/compass/mongosh-1.0.5-x64.msi

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

  • https://www.mongodb.com/try/download/shell?jmp=docs
  • https://docs.mongodb.com/mongodb-shell/install/#std-label-mdb-shell-install

1.2 启动 MongoDB

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

 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

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

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

3.2 数据库的删除

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 } ); 
{ "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()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219795.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午9:52
下一篇 2026年3月17日 下午9:53


相关推荐

  • 华硕笔记本r414u怎么安装键盘_华硕R414U详细拆机装内存条步骤!

    华硕笔记本r414u怎么安装键盘_华硕R414U详细拆机装内存条步骤!华硕R414U手动拆解安装内存条详细步骤电脑配置不够用,想要自己手动diy,但不同类型的电脑的内部结构都不同,或与会给第一次拆解此型号电脑的小伙伴带来不少麻烦。前几天小编就给自己的电脑加装了一块内存条,今天就和大家分享一下具体的拆解过程;详细步骤见下面。小编拆解的机型是华硕的R414U,这款电脑的自带内存条是集成在主板的,但拆开后发现主板上有预留的扩展内存卡槽的;比较麻烦的是不想其它的电脑在后盖内…

    2022年5月8日
    107
  • SpringBoot集成Swagger3 —— 教你如何优雅的写文档

    SpringBoot集成Swagger3 —— 教你如何优雅的写文档Swagger 介绍及使用导语 相信无论是前端还是后端开发 都或多或少地被接口文档折磨过 前端经常抱怨后端给的接口文档与实际情况不一致 后端又觉得编写及维护接口文档会耗费不少精力 经常来不及更新 其实无论是前端调用后端 还是后端调用后端 都期望有一个好的接口文档 但是这个接口文档对于程序员来说 就跟注释一样 经常会抱怨别人写的代码没有写注释 然而自己写起代码起来 最讨厌的 也是写注释 所以仅仅只通过强制来规范大家是不够的 随着时间推移 版本迭代 接口文档往往很容易就跟不上代码了 Swagger 简介

    2026年3月18日
    3
  • es数据库简介

    es数据库简介##1.es是什么ElasticSearch简称ES,是一个高拓展和开源的全文搜索和分析引擎,可以准实时地存储、搜索、分析海量的数据。它和MongoDB、redis等一样是非关系型数据。业应用定位:采用RestfulAPI标准的可扩展和高可用的实时数据分析的全文搜索工具。可拓展:开源软件,支持很多第三方插件。高可用:在一个集群的多个节点中进行分布式存储,索引支持shards和复制,即使部分节点down掉,也能自动进行数据恢复和主从切换。采用RestfulAPI标准:通过http接口使用JSO

    2022年5月7日
    61
  • c++解决大整数乘法

    c++解决大整数乘法c++解决大整数乘法问题描述:求两个不超过200位的非负整数的积输入数据:输入有两行,每行是一个不超过200位的非负整数,没有多余的前导0。输出要求:输出只一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么不能输出0342。输入样例:1234567890098765432100输出样例:1219326311126352690000解题思路:采用列乘法竖式的求解思路,采用数组…

    2022年6月2日
    44
  • 高校俱乐部第二届战神杯题解[通俗易懂]

    高校俱乐部第二届战神杯题解

    2022年1月31日
    53
  • 桌面太单调?一起用Python做个自定义动画挂件,好玩又有趣!「建议收藏」

    桌面太单调?一起用Python做个自定义动画挂件,好玩又有趣!「建议收藏」前言前段时间,写了篇博客关于Python自制一款炫酷音乐播放器。有粉丝问我,音乐播放器为什么要用PyQt5,效果是不是比Tkinter赞?PyQt5真的可以实现这些炫酷的UI画面吗?之前没接触过PyQt5,能不能多分享一些这方面的开发案例?今天就带大家,一起用Python的PyQt5开发一个有趣的自定义桌面动画挂件,看看实现的动画挂件效果!下面,我们开始介绍这个自定义桌面动画挂件的制作过程。一、核心功能设计总体来说,我们需要实现将自己喜欢的动态图gif或者视频转成一个桌面动画挂件,并且可以通过鼠

    2022年4月25日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号