当前位置:   article > 正文

MongoDB生态 - 社区开源工具篇_mongodb开源客户端工具

mongodb开源客户端工具

工欲善其事,必先利其器,我们在使用数据库时,通常需要各种工具的支持来提高效率;很多新用户在刚接触 MongoDB 时,遇到的问题是『不知道有哪些现成的工具可以使用』,本系列文章将主要介绍 MongoDB 生态在工具、driver、可视化管理等方面的支持情况。

本文主要介绍社区里贡献的贡献的一些开源工具,这些都是从 MongoDB tools 里精选的github start比较多的开源项目。

shell 提升工具 mongo-hacker

mongo-hacker 主要是通过 ~/.mongorc.js 文件给 mongo shell 实现额外的扩展功能,比如配色输出、扩展一些API、简化aggregation语法等,提升了mongo shell的可读性、易用性,不过由于长时间未更新,部分功能在最新的版本上已经不可用了,经过测试,我最关注的配色输出是没问题的。

schema分析工具 variety

variety 是一款 MongoDB 的 schema 分析工具。

比如针对如下 users 集合

  1. db.users.insert({name: "Tom", bio: "A nice guy.", pets: ["monkey", "fish"], someWeirdLegacyKey: "I like Ike!"});
  2. db.users.insert({name: "Dick", bio: "I swordfight.", birthday: new Date("1974/03/14")});
  3. db.users.insert({name: "Harry", pets: "egret", birthday: new Date("1984/03/14")});
  4. db.users.insert({name: "Geneviève", bio: "Ça va?"});
  5. db.users.insert({name: "Jim", someBinData: new BinData(2,"1234")});
  6. $ mongo test --eval "var collection = 'users'" variety.js
  7. +------------------------------------------------------------------+
  8. | key | types | occurrences | percents |
  9. | ------------------ | ------------ | ----------- | -------- |
  10. | _id | ObjectId | 5 | 100.0 |
  11. | name | String | 5 | 100.0 |
  12. | bio | String | 3 | 60.0 |
  13. | birthday | Date | 2 | 40.0 |
  14. | pets | Array(1),String(1) | 2 | 40.0 |
  15. | someBinData | BinData-old | 1 | 20.0 |
  16. | someWeirdLegacyKey | String | 1 | 20.0 |
  17. +------------------------------------------------------------------+

Restful接口 Eve

eve 是基于python开发的开源 REST API 框架,借助它可以快速方便的开发Web服务,eve后端的数据库支持 MongoDB 以及关系型数据库。

  1. $ curl -i http://127.0.0.1:5000/people/obama
  2. HTTP/1.0 200 OK
  3. Etag: 28995829ee85d69c4c18d597a0f68ae606a266cc
  4. Last-Modified: Wed, 21 Nov 2012 16:04:56 GMT
  5. Cache-Control: 'max-age=10,must-revalidate'
  6. Expires: 10
  7. ...
  8. {
  9. "firstname": "barack",
  10. "lastname": "obama",
  11. "_id": "50acfba938345b0978fccad7"
  12. "updated": "Wed, 21 Nov 2012 16:04:56 GMT",
  13. "created": "Wed, 21 Nov 2012 16:04:56 GMT",
  14. "_links": {
  15. "self": {"href": "people/50acfba938345b0978fccad7", "title": "person"},
  16. "parent": {"href": "/", "title": "home"},
  17. "collection": {"href": "people", "title": "people"}
  18. }
  19. }

与 eve 功能类似的工具还有 KuleRESTHeartCrest

索引优化工具 dex

dex 是 MongoDB 开发的索引优化工具,能根据查询日志来优化索引,但比较遗憾的是这个工具只支持2.6及以下的MongoDB; 这个项目做的工作非常有意义,有兴趣的同学可以fork这个项目,增加对最新版本 MongoDB 的支持。

对象关系映射 mongoengine

mongoengine 能很方便的实现 python 对象到 MongoDB 文档之间的映射。

  1. from mongoengine import *
  2. connect('mydb')
  3. ''' Blog基类
  4. class BlogPost(Document):
  5. title = StringField(required=True, max_length=200)
  6. posted = DateTimeField(default=datetime.datetime.utcnow)
  7. tags = ListField(StringField(max_length=50))
  8. meta = {'allow_inheritance': True}
  9. ''' 文本Blog派生类
  10. class TextPost(BlogPost):
  11. content = StringField(required=True)
  12. ''' 链接Blog派生类
  13. class LinkPost(BlogPost):
  14. url = StringField(required=True)
  15. # Create a text-based post
  16. >>> post1 = TextPost(title='Using MongoEngine', content='See the tutorial')
  17. >>> post1.tags = ['mongodb', 'mongoengine']
  18. >>> post1.save()
  19. # Create a link-based post
  20. >>> post2 = LinkPost(title='MongoEngine Docs', url='hmarr.com/mongoengine')
  21. >>> post2.tags = ['mongoengine', 'documentation']
  22. >>> post2.save()
  23. # Iterate over all posts using the BlogPost superclass
  24. >>> for post in BlogPost.objects:
  25. ... print '===', post.title, '==='
  26. ... if isinstance(post, TextPost):
  27. ... print post.content
  28. ... elif isinstance(post, LinkPost):
  29. ... print 'Link:', post.url
  30. ... print
  31. ...
  32. # Count all blog posts and its subtypes
  33. >>> BlogPost.objects.count()
  34. 2
  35. >>> TextPost.objects.count()
  36. 1
  37. >>> LinkPost.objects.count()
  38. 1

原文地址:https://yq.aliyun.com/articles/69195?spm=5176.100239.blogcont68925.22.or5UQG

其他语言也有类似的工具,例如

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/698729
推荐阅读
相关标签
  

闽ICP备14008679号