设为首页 收藏本站
查看: 1470|回复: 0

[经验分享] MongoDB实战(2)工具集与特殊魔术方法

[复制链接]

尚未签到

发表于 2018-10-27 10:43:58 | 显示全部楼层 |阅读模式
  一、MongoDB启动方式
  MongoDB除了支持命令行的启动方式还支持配置文件启动通过读取启动配置文件的方式来启动数据库比方说配置文件如下
DSC0000.png

  则可以使用如下命令
./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表的数据如下:
> 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的数据
> 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]}})
DSC0001.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]}
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自定义函数如下
  存储过程的定义查看和执行
DSC0002.png




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-627045-1-1.html 上篇帖子: MongoDB实战(1)MongoDB安装与存储结构 下篇帖子: MongoDB实战(3)固定集合与GridFS-Coder
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表