你好,游客 登录 注册 发布搜索
背景:
阅读新闻

MongoDB实战:工具集与特殊魔术方法

[日期:2013-11-12] 来源:phper-每天一点点(博客)  作者: [字体: ]

一、MongoDB启动方式

MongoDB除了支持命令行的启动方式还支持配置文件启动通过读取启动配置文件的方式来启动数据库比方说配置文件如下

181718808.png

则可以使用如下命令

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取数组中指定段的记录

 

192847132.png

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]}

 

结果这样

{"_id":1,"grades":[87]}

{"_id":2,"grades":[90]}

{"_id":3,"grades":[85]}

四、存储过程

MongoDB存储过程是存储在db.system.js表中的我们想象一个简单的sql自定义函数如下

存储过程的定义查看和执行

194708616.png
收藏 推荐 打印 | 录入:574107552 | 阅读:
相关新闻      
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款