2.关于mongodb的基础操做

1、链接mongo。mysql

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]sql

mongodb:// 这是固定的格式,必需要指定。mongodb

username:password@ 可选项,若是设置,在链接数据库服务器以后,驱动都会尝试登录这个数据库数据库

host1 必须的指定至少一个host, host1 是这个URI惟一要填写的。它指定了要链接服务器的地址。若是要链接复制集,请指定多个主机地址。服务器

portX 可选的指定端口,若是不填,默认为27017数据结构

/database 若是指定username:password@,链接并验证登录指定数据库。若不指定,默认打开 test 数据库。ide

?options 是链接选项。若是不使用/database,则前面须要加上/。全部链接选项都是键值对name=value,键值对之间经过&或;(分号)隔开。spa



2、关于mongo的基础数据结构。对象

1.database 数据库(数据库)索引

    和mysql同样,一个mongod 中能够有多个数据库,默认库为db,单个实例能够容纳多个独立的数据库,每个都有本身的集合和权限,不一样的数据库也放置在不一样的文件中。

   (在mongodb中,系统默认还有三个具备特殊功能的库,分别是admin 【特殊权限,用户权限信息】,local【永远不会被复制的库,用来存储本地单台服务器的任意集合】,config【用于保存分片相关信息】)


2.collection 集合   (至关于table 表的概念)

    集合也就是相似于关系型数据库中的表格概念,集合存在于数据库中,集合没有固定的结构,这意味着你在对集合能够插入不一样格式和类型的数据,但一般状况下咱们插入集合的数据都会有必定的关联性。

    (说的再通俗一些,集合就是表,文档就是row,集合就是用来存数据的)

       集合存在于数据库中,一个集合的结构能够是不固定的,也就意味着在一个集合中能够插入不一样格式不一样类型的数据,可是通常状况下,咱们插入集合的数据,都是有必定关联性的。    下面的示例就能够提现出集合的特色。    


        db.tmp.insert({"username":"aaa","phone_num":"13333333333"})

        db.tmp.insert({"username":"bbb","phone_num":"1300000000","carr":"CMCC"})

      db.tmp.insert({"username":"ccc","phone_num": ["13000000001","13333333331","15555555555"])



3.document 文档 (传统数据库中row的概念,也就是一行记录。)

    文档是一组键值(key-value)对(即BSON)。MongoDB 的文档不须要设置相同的字段,而且相同的字段不须要相同的数据类型,这与关系型数据库有很大的区别。

    例:{"username":"ccc","phone_num": ["13000000001","13333333331","15555555555"]

    档中的键/值对是有序的,并且文档中不能存在重复的key

4.field 数据字段/域 (column)

5.index 索引

6.primary key  主键,MongoDB自动将_id字段设置为主键



3、基础操做:

建立数据库:

use testdb;   #建立一个名为testdb的数据库/切换到testdb数据库。

show dbs;  #查看当前都有哪些数据库。


集合相关操做:

show collection #查看当前数据库中全部的集合。

db.tmp.insert({"username":"ccc","phone_num": ["13000000001","13333333331","15555555555"]) 

补充!! :在mongodb3.2 版本以后,新增了两种文档的插入方式:

db.collection.insertOne():向指定集合中插入一条文档数据

db.collection.insertMany():向指定集合中插入多条文档数据



 #在db数据库中的tmp集合中插入一个文档,文档的内容是{"username":"ccc","phone_num":["13000000001","13333333331","15555555555"]

(在 MongoDB 中,你不须要建立集合。当你插入一些文档时,MongoDB 会自动建立集合。)

db.tmp.drop()  #删除名为tmp的集合。

db.tmp.find() #显示出当前集合中全部的文档。

db.tmp.find({"username":"aaa"})  #查询tmp集合中username为aaa的记录。 

#查询基本上都是经过find来完成的,find里面的参数就是查询条件(关于mongodb的查询,会在后面的文章中写到。)



更新相关操做:


db.collection.update(

   <query>,

   <update>,

   {

     upsert: <boolean>,

     multi: <boolean>,

     writeConcern: <document>

   }


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

update : update的对象和一些更新的操做符(如$,$inc...)等,也能够理解为sql update查询内set后面的

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

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

writeConcern :可选,抛出异常的级别。


示例:

db.tmp.update({'username':'aaa'},{$set:{'phone_num':'010-11111111'})

#以上语句只会修改第一条发现的文档,若是你要修改多条相同的文档,则须要设置 multi 参数为 true

db.tmp.update({'username':'aaa'},{$set:{'phone_num':'010-11111111'},{multi:true}


删除文档:

删除 status 等于 A 的所有文档:


db.inventory.deleteMany({ status : "A" })

删除 status 等于 D 的一个文档:


db.inventory.deleteOne( { status: "D" } )


须要注意的是:

remove() 方法 并不会真正释放空间。


须要继续执行 db.repairDatabase() 来回收磁盘空间。

相关文章
相关标签/搜索