暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MongoDB--》基本常用命令使用

巴韭特锁螺丝 2023-02-21
21

数据库操作命令

数据库常用的操作命令如下:

选择和创建数据库

选择和创建数据库的语法格式为:use 数据库名称,如果数据库不存在则自动创建,如下:

    • // 选择 admin 数据库,如果admin数据库不存在则自动创建
      use admin

    数据库的命令规范

    数据库名可以是满足以下条件的任意UTF-8字符串

    1)不能是空字符串(""")。
    2)不得含有 ' ' (空格)、. 、$ 、/ 、\ 和\0 (空字符)。

    2)应全部小写。
    4)最多64字节。

    有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库
    admin:从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
    local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
    config:当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

    查看 “有权限查看的” 所有的数据库 的命令

      show dbs 

      show databases

      举例如下:可以看到我们创建的admin1数据库并没有和MongoDB本身存在的数据库并列,下面只是显示我们切换到了admin1数据库而已,这是什么原因呢?

      原来,MongoDB数据库的机制是,当我们创建数据库而并没有给其赋予集合内容时,该数据库就只会存储在内存当中而不会存储到磁盘中,这也就是导致我们虽然创建了数据库但是并没有显示的原因。说白了:你不给我数据我就不显示。

      查看当前正在使用的数据库命令

      db

      虽然我们创建的数据库并没有赋予其内容,但其也是真实存在的,如下:

      数据库的删除

      数据库的删除命令(主要用来删除已经持久化的数据库)

      1. // db代表当前正在使用的数据库

      2. db.dropDatabase()


      集合操作命令

      集合类似于关系数据库中的表,可以显示的创建也可以隐式的创建,其相关命令如下:

      集合的显示创建

      集合的显示创建命令

      1. // name: 要创建的集合名称

      2. db.createCollection(name)


      集合的命名规范

      集合名不能是空字符串""。
      集合名不能含有 \0字符(空字符),这个字符表示集合名的结尾。

      集合名不能以 "system." 开头,这是为系统集合保留的前缀。

      用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。

      查看当前库中的表的命令

      1. show collections

      2. show tables


      集合的隐式创建

      集合的隐式创建命令

      当向一个集合中插入一个文档的时候,如何集合不存在,则会自动创建集合,通常我们使用隐式创建文档即可。

      集合的删除

      集合的删除命令(如果成功删除指定集合,drop()方法返回true,否则返回false)

        • db.collection.drop()

          db.集合.drop()

        注意:在MongoDB中,集合只有在内容插入后才会创建!也就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

        文档基本的CRUD(增删改查)

        文档 (document) 的数据结构和JSON基本一样,所有存储在集合中的数据都是BSON格式。

        文档的插入

        单个文档的插入:使用 insert() 或 save() 方法向集合中插入文档,其基本语法如下:

          • db.collection.insert(
            <document or array of documents>,
            {
            writeConcern: <documents>,
            ordered: <boolean>
            }
            )

          document:document or array 要插入到集合中的文档或文档数组(json格式)

          writeConcern:document,表达书面关注的文档。

          ordered:可选,为真则按顺序插入数组中的文档,为假则执行无须插入。

          示例如下:(显示插入成功)

          多个文档的插入:使用 insertMany() 方法向集合中插入文档,其基本语法如下:

            • db.collection.insertMany(
              <document or array of documents>,
              {
              writeConcern: <documents>,
              ordered: <boolean>
              }
              )

            插入异常捕获使用 try catch :如果某条数据插入失败,将会终止插入,但已经插入成功的数据不会回滚掉。因为批量插入由于数据较多容易出现失败,因此,可以使用try catch进行异常捕捉处理,测试的时候可以不处理。如下:

            注意

            1)comment集合如果不存在,则会隐式创建。
            2)mongo中的数字,默认情况下是double类型,如果要存整型,必须使用函数NumberInt(整型数字),否则取出来就有问题了。
            3)插入当前日期使用new Date()。
            4)插入的数据没有指定_id,会自动生成主键值。
            5)如果某字段没值,可以赋值为null,或不写该字段。

            文档的基本查询

            查询数据的命令如下:

            db.collection.find(<query>,[projection])
            ParameterTypeDescription
            querydocument可选。使用查询运算符指定选择筛选器
            projectiondocument可选。指定要在与查询筛选器匹配的文档中返回的字段。

            如果想查询符合条件的数据,可以通过以下方式完成:

            如果想查询返回符合条件的第一条数据,可以通过以下方式:

            如果想查询结果返回部分字段,则需要使用投影查询(不显示所有字段,只显示指定字段)

            文档的更新

            更新文档的语法如下:

              • db.collection.update(query, update, options)

                db.collection.update(
                <query>,
                <update>,
                {
                upsert:<boolean>,
                multi:<boolean>,
                writeConcern:<document>,
                collation:<document>,
                arrayFilters:[<filterdocument1>,...],
                hint:<document|string>
                }
                )

              ParameterTypeDescription
              querydocument更新的选择条件
              updatedocument or pipeline要应用的修改
              upsertboolean可选,true为没有查询条件自动创建文档,false则不会插入新文档
              multifboolean可选,true更新符合查询条件的多个文档,false则更新一个文档
              writeConcerndocument可选,表示写问题的文档,抛出异常的级别
              collationdocument可选,指定要用于操作的校对规则
              arrayFiltersarray可选,用于确定要为数组字段上的更新操作修改哪些数据元素
              hintdocument or string可选,指定用于支持查询谓词的索引的文档或字符串

              覆盖修改:如果想覆盖修改可以执行以下命令:

              局部修改:为了解决上面的问题,我们需要使用修改器 $set 来实现,命令如下:

              批量修改:更新所有自己设置条件的数据,如果不加后面的参数,则只能更新符合条件的第一条数据,命令如下:

              列值增长的修改:如果我们想实现对某列值在原有值的基础上进行增加或减少,可使用 $inc 运算符来实现,命令如下:

              删除文档

              删除文档的语法结构如下:

              db.集合名称.remove(条件)

              如果想删除所有数据,可以执行以下命令:

                版权声明:本文内容始发于CSDN>作者 : 亦世凡华、,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
                本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。
                始发链接:https://z5qyj5pyi.blog.csdn.net/article/details/128999867?spm=1001.2014.3001.5502
                在此特别鸣谢:CSDN博主>亦世凡华、的创作。
                本文已获原作者亦世凡华、授权发布在本公众号;
                原作者已在本公众号关联运营账号,故在此声明本文原创为CSDN亦世凡华。
                此篇文章的所有版权归原作者所有,商业转载建议请联系原作者,非商业转载请注明出处。


                文章转载自巴韭特锁螺丝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论