记MongoDB的简单命令

456 阅读3分钟

今天对mongodb的简单命令操作学习了一番,做出以下总结。

mongodb数据库的简单操作

mongodb是一个非关系型数据库,它不能像关系型数据库那样进行一些增删改查的操作,我们需要使用一些特殊的命令来操作mongodb。

连接mongodb数据库

连接mongodb有一个固定的语法,可以使用如下几种方式

  • 使用用户名和密码连接登陆到默认数据库

    $ ./mongo
    MongoDB shell version: 3.0.6
    connecting to: test
    
  • 使用用户 admin使用密码123456 连接到本地的 MongoDB 服务上

    $ mongodb://admin:123456@localhost/
    
  • 使用用户名和密码连接登陆到指定数据库

    $ mongodb://admin:123456@localhost/test
    

创建mongodb数据库

MongoDB 创建数据库的语法格式如下:

$ use DataBase_Name

注意:如果指定的数据库不存在,则创建数据库,如果数据库存在,则切换到指定数据库

删除数据库

MongoDB 删除数据库的语法格式如下

$ db.dropDatabase()

注意: 在此得的db指代的是切换到某一个数据库下面以后的数据库实例

创建集合

在mongodb数据库中,以前的表(table)的形式在这里是以集合的形式存在的,MongoDB 中使用 createCollection() 方法来创建集合。语法格式如下:

$ db.createCollection(name, options)

说明: name: 要创建的集合名称,options: 可选参数, 指定有关内存大小及索引的选项,具体的options的参数,我们可以参考下面的表格

字段 类型 描述
capped 布尔 (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。
autoIndexId 布尔 (可选)如为 true,自动在 _id 字段创建索引。默认为 false。
size 数值 (可选)为固定集合指定一个最大值(以字节计)。如果 capped 为 true,也需要指定该字段。
max 数值 (可选)指定固定集合中包含文档的最大数量。

下面,我们就尝试去创建一个集合

$ db.createCollection("userInfo", { capped : true, autoIndexId : true, size : 
   6142800, max : 10000 } )

说明:在mongodb当中,创建集合并非是一定的,当我们向里面去插入一条数据的时候,这个集合就会自己去创建

$ db.userInfo.insert({"userName" : "yangbiao"})删除集合

删除集合

MongoDB 中使用 drop() 方法来删除集合。具体的语法格式如下:

$ db.collection.drop()

例如,如果我们想把刚刚创建的usrInfo这个集合删除,则可以使用如下语法

$ db.userInfo.drop()

插入文档

在此处需要说明一下,以前的关系型数据库(mysql,sqlserver,oracel等数据库),这些都是关系型数据库,存储是以表为单为,表中又以行为单位,而mongodb是一个非关系型数据库,已经没有表与行的概念了

mongodb的集合中,所有的数据都是以json键值对的形式在进行存储,如果我们希望向里面去插入一条信息,则相当于是插入一个json键值对(也可以理解为一个js对象),它的语法格式如下

$ db.userInfo.insert({name:'樊启东',sex:'男'})

在上面的语句中插入了一行记录,这一行记录是以json键值对的形式插入进去的

更新文档

在mongodb当中,更新文档的方式有两种。

  • (1) save()
  • (2)update()

现在,我们来看一下这两种方式的语法与区别

  • save方法

    save() 方法通过传入的文档来替换已有文档。语法格式如下

    $ db.collection.save(
       <document,
       {
         writeConcern: <document
       }
    )
    

    现在看一下具体的语法

    $ db.col.save({
        "_id" : ObjectId("56064f89ade2f21f36b03136"),
        "title" : "MongoDB",
        "description" : "我现在通过mongodb插入数据"
    })
    

    在此,我们保存的是一个已经存在的文档

  • update方法

    $ db.collection.update(
       <query,
       <update,
       {
         upsert: <boolean,
         multi: <boolean
       }
    )
    

    说明一下:

    • query: update的查询条件,类似sql update查询内where后面的。

    • update: update的对象和一些更新的操作符(如,inc...)等,也可以理解为sql update查询内set后面的

    • upsert: 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

    • multi: 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

    现在,我们看一下具体的语法格式

    $db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   # 输出信息
     db.col.find().pretty()
    {
            "_id" : ObjectId("56064f89ade2f21f36b03136"),
            "title" : "MongoDB",
            "description" : "我通过update写入的数据",
    }
    

    通过对上面命令的总结,逐渐对非关系型数据库有了一定的认知和熟悉,希望能够在接下来的日子里,循序渐进,争取早点学会MongoDB,那样就能前后端一把梭哈,随心所欲,还能体验删库跑路的操作啦! (O(∩_∩)O哈哈~,当然是不可能的)