【问题标题】:Mongo aggregation doesn't work in pymongoMongo 聚合在 pymongo 中不起作用
【发布时间】:2013-08-02 19:08:43
【问题描述】:

我正在尝试在 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 

【问题讨论】:

    标签: django mongodb


    【解决方案1】:

    这与驱动程序无关 - 与 mongodb 本身有关。 aggregate() 在 mongodb 2.2 中引入:docs.

    很可能,您使用的是旧版本的 mongodb。检查您的 mongodb 版本并根据需要进行升级。还要检查在你的 python 代码中你连接到的 mongodb 版本 >=2.2。

    另见:

    【讨论】:

    • 就是这样! MongoDB 版本分别是 2.0.4 和 2.2.4。谢谢!
    猜你喜欢
    • 2021-02-10
    • 2017-07-03
    • 2015-05-10
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    相关资源
    最近更新 更多