不使用db.eval()的Django中的MongoDB Python ORM

2 投票
1 回答
698 浏览
提问于 2025-04-16 23:38

我正在使用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:这两个地方分别是 sumaverage。同时,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

撰写回答