我正在尝试使用Django中的聚合进行查询,它可以与我的本地计算机一起使用,但不能在服务器中运行。
在两台机器中,pymongo都安装在Python虚拟环境中:
pip freeze | grep mongo
pymongo==2.5.2
我还可以使用find()方法在两台机器中获取插入的数据: conn.firmalar.searchlogger.find()
但是聚合方法在我的本地工作但在服务器中不工作,即使安装的所有内容都是相同的。当我尝试在服务器上运行它时出现此错误:
import pymongo
conn = pymongo.Connection()
search = conn.firmalar.searchlogger.aggregate([{"$group": {"_id": "$what", "count": {"$sum": 1}}}])
OperationFailure at /admin/weblog/
command SON([('aggregate', u'searchlogger'), ('pipeline', [{'$group': {'count': {'$sum': 1}, '_id': '$what'}}])]) failed: no such cmd: aggregate
/home/cem/env/firmalar/local/lib/python2.7/site-packages/pymongo/collection.pyc in aggregate(self, pipeline)
1059 self.secondary_acceptable_latency_ms),
1060 slave_okay=self.slave_okay,
-> 1061 _use_master=use_master)
1062
1063 # TODO key and condition ought to be optional, but deprecation
/home/cem/env/firmalar/local/lib/python2.7/site-packages/pymongo/helpers.pyc in _check_command_response(response, reset, msg, allowable_errors)
145 if code in (11000, 11001, 12582):
146 raise DuplicateKeyError(errmsg, code)
--> 147 raise OperationFailure(msg % errmsg, code)
148
149
答案 0 :(得分:3)
这不是关于驱动程序 - 它是关于mongodb本身。在{mongodb 2.2:docs中引入了aggregate()
。
最有可能的是,您使用的是较早版本的mongodb。检查您的mongodb版本并根据需要升级。还要检查你的python代码中是否连接到mongodb版本> = 2.2。
另见: