文档:
1.文档中的键/值对是有序的。
2.文档中的值不仅可以使在双引号里面的字符串,还可以是其他几种数据类型
3.健不能含有空字符。这个字符用来表示健的结尾
4. .和$有特别的意义
5.以下划线开头的键是保留的
MongoDB不但区分类型,也区分大小写。同时也不能有重复键
集合:
1.集合是一组文档。如果说MongoDB中的文档类似与关系数据库中的行。那么集合就是表
2.集合石无样式的,一个集合中可以包含各种样式的文档
3.命名方式:
*
*
*
*
子集合:
组织集合的一种惯例是使用"."字符分开的按命名空间划分的子集合。
GridFS是一种存储大文件的协议,使用子集合来存储文件的元数据,这样就与内容分开。
MongoDB的Web控制台通过子集合的方式将数据组织在DBTOP部分
绝大多数驱动程序都提供语法。来访问指定集合的子集合提供方便。
MongoDB中使用子集合来组织数据时很好的方法。
数据库:
MongoDB中的多个文档组成集合,同样多个集合就组成数据库。数据库也通过数据名字来标识(全部为小写)
。admin
从权限的角度来看,着是”root“数据库.要是将一个用户添加到这个数据库,这个用户将自动的继承对应的权限.一些特定的服务器命令也只能从这个数据库运行.
。local
这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
。config
当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息
把数据库的名字放在集合的前面就是集合的完全限定名。称为:命名空间。
Shell中的基本操作
1.创建
2.删除
3.修改
4.读取
基本数据类型:
因为是以Json的数据格式存储的,因此存在的数据类型就只有:null,字符,数字,布尔,数组和对象几种。
对象ID
对象ID是文档的12字节的唯一ID
内嵌文档
内嵌文档就是把整个MongoDB文档当做另一个文档的键的一个值。这样数据可以组织得更加自然。
_id和ObjectId
ObjectId是“_id”的默认类型,它涉及成轻量型的,不同的机器都能用全局唯一的同样的方法方便的生成。
创建、更新、删除文档
1.插入并保存文档
1.1批量插入。如果插入多个文档,使用批量插入会快些。批量、插入能传递一个由文档构成的数组给数据库。一次批量插入只是单个的TCP请求。不必要去处理大量的消息头。当单个的文档发送到数据库时,会有一个头部信息,告诉数据库对指定的集合进行插入操作。
1.2插入:原理和作用:
当执行插入的时候,使用的驱动程序会将数据转成BSON的形式,然后送入数据库中。数据库解析BSON,检验室否包含“_id”键并且文档不超过4MB。除此之外不做别的验证。
1.3删除
db.drop_collection();db.testDB.remove();前面的删除速度快于后面的删除速度,但是前面的删除会把整个集合都删除了,索引也会相应的被删除。
1.4 更新文档
文档存入数据库以后,就可以使用update方法来修改它。update有俩个参数,一个是查询文档,用来找出要更新的文档,另一个就是修改器,描述对找到的文档做那些修改。
更新操作是原子的:若是俩个更新同时发生,先到服务器的先执行,接着执行另一个。所以,互相有冲突的更新可以火速传递,并不会相互干扰:最后更新会取得“胜利”
1.4.1 文档替换
更新 最简单的情形就是完全用一个新文档去替代匹配的文档。这使用与模式结构发生较大变化的时候。如:要对下面的用户文档做一个比较大的调整
2.使用修改器
1.$inc 增加的修改器
2.$addToSet 修改器只能操作集合 (可以避免重复)
3.$push 修改器 也只能操作集合
4.$ne 操作集合 也$addToSet的功能几乎一样
5.$each
3.修改器速度:
1.数组修改器的速度要小于其他的修改器
4.返回已经更新的文档
用getLastError仅能获得有限的信息,并不嗯能够返回已更新的文档。findAndModify命令来做到
findAndModify命令中每个键对应的值如下所示:
。findAndModify 字符串、集合名
。query 查询文档,用来检索文档的条件
。sort 排序结果的条件
。update 修改器文档,对所找到的文档执行更新
。remove 布尔类型,表示是否删除文档
。new 布尔类型,表示返回的是更新前的文档还是更新后的文档,默认为更新前的文档。
“update”和“remove”必须只有一个。要匹配不到文档,这个命令会返回一个错误。‘
getLastError
请求和连接
数据库会Wie每一MongoDB数据库连接创建一个队列,存放这个连接请求。当客户端发送一个请求,会放到这个队列的末尾。只有队列中的请求都执行完毕,后续的请求才会执行。所以单个连接就可以了解整个数据库,并且他总能读到自己写的东西、