不使用db.eval()的Django中的MongoDB Python ORM
我正在使用ExtJS作为前端,后端则是Django、MongoDB和MongoEngine(这是一种在两者之间的ORM)。一切运行得很好,直到我决定对Mongo数据库进行分片,结果发现db.eval()(这个命令是用来在数据库中运行指令的)在分片数据库上无法使用。所以我不得不更换ORM。
我找到了几个其他的ORM,比如mongokit和mongoalchemy,但我不想一个个去试这些ORM,也不想在换了新的ORM后,还要把所有的命令都改过来。有没有人知道一个不使用db.eval()或者能在分片Mongo数据库上正常工作的Mongo ORM呢?
谢谢!
1 个回答
2
MongoEngine 现在已经更新,不再在两个地方使用 db.eval
,而是应该使用 map_reduce:这两个地方分别是 sum
和 average
。同时,item_frequencies
也更新了,默认使用 map_reduce,而不是 exec_js 和 db.eval
。
这次更新其实很小:感谢 @dcrosta 提供的补丁,以及告诉我这个讨论存在!你可以从开发分支获取最新的代码,链接是 https://github.com/hmarr/mongoengine/tree/dev
别忘了,MongoEngine 有一个邮件列表,地址是 http://groups.google.com/group/mongoengine-users,可以在这里讨论任何意见、问题或反馈,还有 IRC 上的 #mongoengine 频道。
谢谢,
Ross