Cursor对象。但是,当我使用mongod 2.7.1在mongod实例(2.6+)上本地运行查询时,我得到了一个dict对象!在14: obj = coll.aggregate({'$group':{'_id':'$l','n':{'$sum':1}}) 15: type(obj) Out15: dict
有人能帮我理解这里发生了什么吗?
发布于 2016-06-30 19:49:42
是的,您可以将maxTimeMS与pymongo聚合一起使用。
c.foo.bar.aggregate([], maxTimeMS=1000)
{u'ok': 1.0, u'result': []}如果您想要游标:
for result in c.foo.bar.aggregate([], cursor={}, maxTimeMS=1000):
... print result聚合命令在MongoDB 2.6之前不支持游标,因此必须添加它作为选项,以避免破坏现有的应用程序。
发布于 2014-07-15 03:42:09
这在司机文件中有介绍,其中描述为了返回游标,除了在.aggregate()方法中的管道之外,还需要指定参数:
cursor = coll.aggregate([{'$group': { '_id': '$l', 'n': {'$sum': 1} }}],cursor={})注意,这里返回的对象是CommandCursor,而不是游标。
这是因为各种修饰符(如.limit()和.skip()等)和其他选项不适用于聚合结果的上下文。因此,对于这种类型的游标,$maxTimeMS不是一个有效的选项。
此外,即使在有效的地方,它也不会做你认为它会做的事情。原因是“游标”执行只在“聚合管道”执行完成后计算,因此在本例中,只需获取结果。
查看.currentOp()和.killOp()实现,了解控制长期运行的聚合任务的其他方法。
https://stackoverflow.com/questions/24691093
复制相似问题