MongoDB Shell工具:mongosh的使用 您所在的位置:网站首页 linux连接mongodb MongoDB Shell工具:mongosh的使用

MongoDB Shell工具:mongosh的使用

2023-08-07 06:53| 来源: 网络整理| 查看: 265

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( , { writeConcern: , collation: , hint: // 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() 3.4.3 修改集合中的文档

暂无内容



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有