本文共 2615 字,大约阅读时间需要 8 分钟。
一、MongoDB启动方式
MongoDB除了支持命令行的启动方式还支持配置文件启动通过读取启动配置文件的方式来启动数据库比方说配置文件如下
则可以使用如下命令
1 | . /mongod -f /etc/mongodb .conf |
MongoDB参数说明
dbpath:
数据文件存放路径每个数据库会在其中创建一个子目录用于防止同一个实例多次运 行的mongod.lock也保存在此目录中。 logpath 错误日志文件 logappend 错误日志采用追加模式默认是覆写模式 bind_ip 对外服务的绑定ip一般设置为空及绑定在本机所有可用ip上如有需要可以单独 指定 port 对外服务端口。Web管理端口在这个port的基础上+1000 fork 以后台Daemon形式运行服务 journal 开启日志功能通过保存操作日志来降低单机故障的恢复时间在1.8版本后正式加入 取代在1.7.5版本中的dur参数。 syncdelay 系统同步刷新磁盘的时间单位为秒默认是60秒。 directoryperdb 每个db存放在单独的目录中建议设置该参数。与MySQL的独立表空间类似 maxConns 最大连接数 repairpath 执行repair时的临时目录。在如果没有开启journal异常down机后重启必须执行repair 操作。停止数据库这里有一点需要注意
使用kill-2或者pkill都可以但是不要使用kill-9来杀死MongoDB进程这样会导致MongoDB的数据损坏。
二、常用工具集
MongoDB在bin目录下提供了一系列有用的工具这些工具提供了MongoDB在运维管理上
的方便。 bsondump:将bson格式的文件转储为json格式的数据 mongo:客户端命令行工具其实也是一个js解释器支持js语法 mongod:数据库服务端每个实例启动一个进程可以fork为后台运行 mongodump/mongorestore:数据库备份和恢复工具 mongoexport/mongoimport:数据导出和导入工具 mongofiles:GridFS管理工具可实现二制文件的存取 mongos:分片路由如果使用了sharding功能则应用程序连接的是mongos而不是 mongod mongosniff:这一工具的作用类似于tcpdump不同的是他只监控MongoDB相关的包请 求并且是以指定的可读性的形式输出 mongostat:实时性能监控工具三、一些很重要的魔术方法
1、$all匹配所有
这个操作符跟SQL语法的in类似但不同的是,in只需满足()内的某一个值即可,而$all必 须满足[]内的所有值例如: db.users.find({age:{$all:[6,8]}}); 可以查询出{name:'David',age:26,age:[6,8,9]} 但查询不出{name:'David',age:26,age:[6,7,9]}2、$mod取模运算
查询age取模10等于0的数据 db.student.find({age:{$mod:[10,1]}}) 举例如下: C1表的数据如下: 1 2 3 4 | > db.c1. find () { "_id" : ObjectId( "4fb4af85afa87dc1bed94330" ), "age" : 7, "length_1" : 30 } { "_id" : ObjectId( "4fb4af89afa87dc1bed94331" ), "age" : 8, "length_1" : 30 } { "_id" : ObjectId( "4fb4af8cafa87dc1bed94332" ), "age" : 6, "length_1" : 30 } |
查询age取模6等于1的数据
1 2 | > db.c1. find ({age: {$mod : [ 6 , 1 ] } }) { "_id" : ObjectId( "4fb4af85afa87dc1bed94330" ), "age" : 7, "length_1" : 30 } |
可以看出只显示出了age取模6等于1的数据其它不符合规则的数据并没有显示出来
3、$size数组元素个数
对于{name:'David',age:26,favorite_number:[6,7,9]}记录 匹配db.users.find({favorite_number:{$size:3}}); 不匹配db.users.find({favorite_number:{$size:2}});4、$slice取数组中指定段的记录
db.posts.find({},{ comments:{ $slice:5}})
db.posts.find({},{ comments:{ $slice:[20,10]}})
5、$看实例吧
{ "_id":1,"semester":1,"grades":[70,87,90]}
{ "_id":2,"semester":1,"grades":[90,88,92]}
{ "_id":3,"semester":1,"grades":[85,100,90]}
{ "_id":4,"semester":2,"grades":[79,85,80]}
{ "_id":5,"semester":2,"grades":[88,88,92]}
{ "_id":6,"semester":2,"grades":[95,90,96]}
db.students.find({ semester:1,grades:{ $gte:85}},{ "grades.$":1})
结果这样
{ "_id":1,"grades":[87]}
{ "_id":2,"grades":[90]}
{ "_id":3,"grades":[85]}
四、存储过程
MongoDB存储过程是存储在db.system.js表中的我们想象一个简单的sql自定义函数如下
存储过程的定义查看和执行
本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1322792,如需转载请自行联系原作者