###MongoDB是什么?
MongoDB是一种强大,灵活,可扩展的存储方式。与关系型数据库不同,它是一种面向文档的数据库。它扩展了关系型数据库的很多辅助功能,如辅助索引,范围查询,和排序,还有一些独特功能,丰富的数据模型,良好的可扩展性,如内置对MapReduce式聚合的支持,对地理空间索引的支持。
文档是MongoDB中的数据的基本单元,非常类似于关系型数据库管理系统中的一行记录,类似地,集合可以看做是没有固定模式的表,MongoDB的单个实例可以容纳多个数据库。数据库,集合,文档是MongoDB中最核心的三个概念。
####MongoDB的启动与链接
MongoDB服务端进程启动命令如下:
`$ mongod --dbpath --port --fork --config --logpath`
* --dbpath:指定数据目录,默认值是/data/db
* --port: 指定服务器监听的端口号
* --fork: 以守护进程的方式运行MongoDB,创建服务器进程
* --logpath:指定日志输出路径 、
* --config:指定配置文件
MongoDB自带一个Javascript shell,用命令行与MongoDB实例交互 `$ mongo -h ipaddress -p27017`
####MongoDB的CRUD操作
1.insert
insert插入一个文档,文档是json格式
`db.person.insert({"name":"ming","age":18})
db.person.insert({"name":"Jack", "age":100)`
如果想实现批量插入,请用javascript中得for循环语句
2.find操作
默认是查出集合中得20条数据
`db.person.find()`
还可以在find中加入众多的查询条件
`db.person.find({"name":"ming")`
find操作室返回一个结果集,还能对返回的结果集进行限定条数或者排序
`db.person.find().limit(10)
db.person.find().sort("name":1)`
3.update操作
update方法的第一个参数为查询的条件,第二个参数为更新的值
`db.person.find{{"name":"ming"},{"name":"xing",age:25}}`
4.remove操作
`db.person.remove()`
这个语句将删除集合中所有的文档
####MongoDB的聚合操作
1.count
count是最简单地聚合操作,查询出集合中的文档数目
`db.person.count()`
2.distinct
对指定条件进行去重
`db.person.distinct("age")`
3.group
group操作比较复查,参数较多
`db.person.group({"key":{"age":true}},
"initial":{"person":[]},
"reduce":function(doc,out){
out.person.push(doc.name)},
"condition":{"age":{$lt:30}}
})`
####MongoDB的索引操作
添加索引
`db.person.ensureIndex({"name":1})`
添加唯一索引
`db.person.ensureIndex({"name":1},{"unique":true})`
删除索引
`db.person.dropIndexes({"name_1")`
可以用性能分析函数explain()来分析执行的效率,对大数据的集合添加索引能有效增加查询效率
***
######MongoDB与PHP的交互
######MongoDB的部署