一个简单的mongo wrapper

2013-11-14 18:06:49 +08:00
 yueyoum
https://github.com/yueyoum/mongo-wrapper

LZ 刚开始正式使用mongodb, 直接用的pymongo

发现每次操作数据的时候, 都要写一大堆,什么 $set, $pull, 之类的

而且还发生过一次 db_name.collection_name.operate 的时候, collection_name 不小心写错了, 导致 debug了一段时间。

所以就想到还是应该把insert, update, 操作封装一下。

看了下mongoengine,感觉有点重量级。

于是自己写了个简单的封装。

因为目前存储的数据结构比较简单, 所以只实现了目前我需要的操作。

欢迎大家讨论
2689 次点击
所在节点    Python
3 条回复
ritksm
2013-11-14 18:26:05 +08:00
说实话我没看出来这个轮子有啥必要的地方。。。而且整个内部逻辑都被封装起来了,一个失去了自由性,一个对数据很不放心

1、发现每次操作数据的时候, 都要写一大堆,什么 $set, $pull, 之类的:
这个和你的业务逻辑是有关系的吧。我最近经常用到的update就只有push,而且你把set这么一封装就失去了多条update的能力吧。
2、而且还发生过一次 db_name.collection_name.operate 的时候, collection_name 不小心写错了, 导致 debug了一段时间。
这个难道不应噶写在配置文件里import进来么,或者做个全局的变量


我感觉用mongodb要么就直接pymongo,接口已经很简洁了而且well-documented。。要么上mongoengine的主要也还是和django啥的集成吧
yueyoum
2013-11-14 19:48:00 +08:00
@ritksm

是的, 失去了很大的灵活性, 所以我也说这只是应对我目前项目的。

1, 还是可以 多条update的,只是没法 一起 update list 和 普通的field, 比如 {a: 1, b: [1,2,3]} 我这样封装的set 方法就没法一起操作。

不过也是你说的 和业务有关。 我现在的存储 还没有这种情况。


2, 你说的对



pymongo 确实是 well-documented的, 只是我在使用的时候 遇到了我提到的那些问题而已。

最后,其实这不是个轮子, 我连 setup.py 都没写, pypi 都没提交。 只是个自己使用的工具,
而且我也没有使用mongodb 的经验

总之感谢你的建议, 欢迎这样的讨论 ^_^
yeweiyang
2013-11-15 21:23:45 +08:00
三草芥 同学

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/89289

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX