1,mongodb使用MongoDB传输协议做为和服务器交互的主要方式,与之对应的协议http/rest须要更多的开销 mongodb
2,mongodb区分类型,区分大小写。 shell
3,文档:多个键及其关联的值有序的放在一块儿即是文档。{"greet":"hello world"};{"greet":"helloworld","bad":"hello world"}至关于关系行数据库中的行,文档中的键/值对是有序的,上面的文档和下面的文档是彻底不一样的。 数据库
4,集合:就是一组文档,若是文档至关于关系行至关于关系型数据库中的行,那么集合就至关于关系型数据库中的表。集合是无模式的,这就意味着一个集合中的文档能够是各式各样的。例以下面两个文档能够放到一个集合里 数组
{"greet":"hello world"},{"foo":5} 服务器
5,命名:1,集合名不能是空字符串。 ide
2,集合名不能有\0,这个是标识结合的结尾 post
3,不能以"system"开头,这是为系统集合表留的前缀。例如system.user这个集合保存者数据库的用户信息。 网站
4,千万不要在名字中出现$. url
6,数据库:mongodb 中多个文档组成集合,多个集合能够组成数据库。一个mongodb实例能够继承多个数据库,它们之间能够当作是彻底独立的。每一个数据库具备独立的权限控制,即便在磁盘上,不一样的数据库也放置在不一样文件中。注意,数据库的名字应该所有小写,最多64个字节。 spa
7,mongodb客户端:开启的时候,shell会连接到mongodb服务器的test数据库,并将这个数据库连接赋值给全局变量db。这个变量是shell访问mongodb的主要入口点。
8,shell中的基本操做:CRUD
1,建立:> post={"title":"production","content":"spider your shop","date":new Date()},上面执行完以后,已经建立了一个有效文档,insert方法将其保存到blog集合中。
2,>db.blog.insert(post);
3, 查看>db.blog.find();用db.blog.findOne();能够查看一个文档。
4,更新:update:至少接受连个参数:新文档的限定条件,新的文档
blog.status=0;
db.blog.update({"title":"production"},post);
5,删除:db.blog.remove();删除所有
db.blog.remove({"title":"helloworld"});
9,使用数据库帮助命令:
1,db.help()------->查看数据库级别命令的帮助
2,db.foo.help()-->集合相关的命令。
10,数据类型:布尔,null,数字,字符串,数组,对象。
JSON没有日期类型,不能区分浮点数和整数,当mongodb作了补充。
默认状况下,shell中的数字都被mongodb看成是双精度,这样致使默认的数据类型转换成双精度的问题,
11,建立,更新,删除文档:
插入: db.blog.insert({"family":"father and mother i love you"});
批量插入:只有插入多个文档到一个集合,这种操做才会有用。
删除文档:db.blog.remove();删除全部文档,但不会删除集合自己,原有的索引也会保留。
db.blog.remove({'username':'helloworld'});
更新文档:db.blog.update({'username':'helloworld'},post)
使用修改器:一般,文档只需一部分须要更新。利用原子的更新修改器,使得这部分更新及为高效。
案例:在一个集合中放置网站的分析数据,没当有人访问页面的时候,就要增长计数器,每一个URL以及对应的访问次数以下存储在analysis文档中:
example="{
"_id":ObjectId("51b1a30013aaef94f07c1f7b"),
"url":"www.example.com",
"pageViews": 4444
}"
db.example.insert("example");
db.example.find();
{
"_id" : ObjectId("51b1c08513aaef94f07c1f7d"),
"url" : "www.example.com", "pageviews" : 0
}
利用修改器进行pageviews的自增1:
db.example.update({"url":"www.example.com"},------->这里写完后回车
...{"$inc":{"pageviews":1}}) ------------------------------->这里写完后回车。
db.analysis.find();会发现pageviews会增长1.
说明:JavaScript中变量没有$,因此用$开头算是遗留问题。