第一章
1.使用MongoDB传输协议
2.尽可能把逻辑处理交给客户端

第二章
一.文档
1.文档-集合-数据库(关系型:表-行-库)
2.文档是MongoDB的核心概念
3.文档自动添加"_id"键值对作为唯一标示
4.文档的键值对是有序的
5.键的命名:键不能含\0,它表示键的结尾;KaTeX parse error: Expected 'EOF', got '\0' at position 50: …合 7.集合命名规范:不能包含\̲0̲,不能以system开头,不能…
8.子集合
三.数据库
9.一个MongoDB实例可以承载多个数据库
10.数据库命名规范:不能是空字符串;全部小写;不能含空格、.、$、/、\、\0
数据库最终会变成文件系统里的文件,这也是有如此多的限制的原因
11.有些数据库名是保留的,可以直接访问:
admin,从权限来看,这是"root"数据库,如果将一个用户添加到这个数据库,该用户会自动继承所有数据库权限。
local:这个数据库不会被复制,可以用来存储限于本地单台服务器的任意集合。
config:当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息

12.在没有参数的情况下默认使用\data\db\,使用27017端口。
13.MongoDB shell基本操作
db.集合.findone()只返回一个文档
db.集合.find()自动显示最多20个匹配的文档
14.当集合名与db的属性名相同时,会有限返回属性值,可以使用db.getCollection(‘集合名’)
15.文档的数据类型:null Boolean string undefined 数组 64位浮点数 日期 正则 二进制数据 代码 内嵌文档 最大值 最小值
shell中不可用:32位整数 64位整数 符号
16.创建日期对象:new Data()
17.objectId使用12字节的存储空间,每个字节两位十六进制数字,是一个24位的字符串;在客户端生成
18.objectId命名:时间戳(4字节) 主机的唯一标识符,通常是主机名的散列值(3字节)进程标示(2字节)计数器(3字节)

第三章
1.当前版本消息的最大长度是16M
执行插入时,使用的驱动程序会将数据转换成BSON的形式,数据库解析后检验是否包含"_id"键且文档不超过4M
2.$ne如果值不在数组中,就添加
$addToSet 同上
$pull 将匹配到的数组的项全部删除
$只更新第一个匹配的元素
upsert:如果没有找到,就创建
save(‘文档’):如果文档含有_id键就更新,否则新建
查询更新了多少文档:getLastError
安全版本:执行完操作运行getLastError检查是否成功
每个shell客户端和数据库的链接是独立的
查询:
find({},{集合名:1,集合名2:1}) // 第二个参数设置想要返回的文档
$ne查询不是x的文档
$nin()返回与筛选数组都不匹配的文档
正则表达式查询
$size
$slice:n // 参数是整数返回前n项,负数返回后面n项
$slice: [m, n] 跳过前面m个,返回后面紧挨着的n个,如果不够n个,返回后面全部
$elemMatch:{"":"","":""}

------21:10-23:40 2.5h

({’$where’:‘function ()’ {return}})
游标
不同类型的数据sort排序,顺序是预定好的
skip跳过操作是很耗性能的,包括其他数据库
高级查询
快照
游标内幕