Mongodb是为互联网应用而生的数据库. 什么意思呢? 如果你的项目读的次数远大于写, 那么就适合用mongodb. 例如前台资讯型网站. 大家基本上都是浏览文章, 很少发贴. 这时候就很适合用mongodb.
以mongodb为代表的nosql数据库, 以牺牲数据库事务性为代价, 提高访问速度. 它并不适合订单类应用. 我们以电商项目为例子. 电商项目的主要业务在于展示商品, 用户可以下订单. 对于数据的展示, 可以把商品数据存到mongodb里. 对于用户下单业务, 还是用mysql/oracle处理比较合适.
那么系统同时存在两个数据库, 是不是就更复杂了呢? 不是. mongodb是schema-free的数据库.
意思就是你完全可以不考虑表结构, 随便写你的业务. 对于开发业务系统而言, 可以做到快速适应需求, 快速上线, 随便折腾.
当然代价就是系统的冗余代码可能增多, 整体风格混乱. 这也没办法, 请找一个强力的架构师来控制好吧.
因为这篇是入门介绍帖子, 所以不详细介绍在生产环境怎么装. 我的目的只是让你安装, 跑起来, 能够跑我的python代码就行了. 程序的下载路径在这里(记得选3.4版本): mongodb安装包下载地址
下载之后就是一路next, 没什么好说的. 之前说过用mongdb很自由. 装完之后, 并不需要像oracle/mysql 那样做一堆事情. 你直接就可以干活.
Python访问mongodb的最好第三方包是pymongo. 用pymongo本身已经很简单了.
但你知道python总有更简单的东西.... ming就是这么一个封装了pymongo的orm框架, 它让你能用面向对象的思维来存储数据.
如果你很熟悉java的hibernate, 那么你可以把它理解成hibernate.
安装ming很简单, 用pip就行了:
pip install ming如果你注意看控制台, 你会看到它自动把pymongo装上了.
来段程序吧, 说了这么多话, 我写程序的心已经饥渴难耐了:

14-15行 引入了一堆mongodb的类库
18-19行 是创建数据连接的写法, 最终目的是得到一个session类. (g_ 为前缀是我的习惯, 以这样的开头来命名全局变量)
23-31行 是定义表的开始. 需要继承Document 这个类. class 这段基本照抄, 注意修改name为真正的表名即可. 另外注意28行, 以_id的方式定义了主键id. 29-31定义其他的字段.
34-40行 演示如何增加数据. 增加数据仿佛新建一个对象那么自然, 只要在最后调用实例.m.save() 这个方法就行了. (第40)行.
43-46 展示了如何查找数据. 表明.m.find() 表示得到这个表的所有数据.
它会返回一个iterable 对象, 你可以用for来遍历它, 从而访问每一条数据. 值得注意的是46行. 如果要访问数据的主键,
通常用str(对象._id) 来得到(注意id前的_). 为什么不用id而用_id呢? 因为在python里id这个名字实在太危险了,
很多框架都用id. 所以ming为了避免这个潜在的危险, 用_id了.
_id是一个ObjectId 对象(见28行), 所以你要用str进行转型, 才会输出字符串.
好了, 用程序你已经知道, 一个用户数据已经插到数据库了. 如果想用工具访问怎么办? mongodb支持命令行访问, 当然更方便的是用gui工具. 最好用的是robomongo这个客户端, 下载地址在这里: 客户端工具robomongo下载地址
安装连接都很简单, 不再多说. 打开之后是这样:

你也许开始懵了. 如果要查找数据, 用什么语言呢? sql数据库用sql, mongodb 用什么? 答案是用key-value 进行查找,
非常像js语法. 再看看下面这个需求: 找出name是test的数据, 那么查询条件是这样:
db.getCollection('user').find({'name':'test'}) , 如下图:

是不是很有趣? 哈哈.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3141289/ ,如需转载,请注明出处,否则将追究法律责任。