首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MONGO2.6和Pymongo2.7.1上使用maxTimeMS参数进行聚合查询

在MONGO2.6和Pymongo2.7.1上使用maxTimeMS参数进行聚合查询
EN

Stack Overflow用户
提问于 2014-07-11 06:10:10
回答 2查看 3.4K关注 0票数 3
  • 我无法使用maxTimeMS参数与MOGO2.6和Pymongo2.7.1
  • 根据这个页面上的文档,官方Mongodb聚合页面,聚合方法应该返回一个Cursor对象。但是,当我使用mongod 2.7.1在mongod实例(2.6+)上本地运行查询时,我得到了一个dict对象!

在14: obj = coll.aggregate({'$group':{'_id':'$l','n':{'$sum':1}}) 15: type(obj) Out15: dict

有人能帮我理解这里发生了什么吗?

EN

回答 2

Stack Overflow用户

发布于 2016-06-30 19:49:42

是的,您可以将maxTimeMS与pymongo聚合一起使用。

代码语言:javascript
运行
复制
c.foo.bar.aggregate([], maxTimeMS=1000)
{u'ok': 1.0, u'result': []}

如果您想要游标:

代码语言:javascript
运行
复制
for result in c.foo.bar.aggregate([], cursor={}, maxTimeMS=1000):
... print result

聚合命令在MongoDB 2.6之前不支持游标,因此必须添加它作为选项,以避免破坏现有的应用程序。

票数 3
EN

Stack Overflow用户

发布于 2014-07-15 03:42:09

这在司机文件中有介绍,其中描述为了返回游标,除了在.aggregate()方法中的管道之外,还需要指定参数:

代码语言:javascript
运行
复制
cursor = coll.aggregate([{'$group': { '_id': '$l', 'n': {'$sum': 1} }}],cursor={})

注意,这里返回的对象是CommandCursor,而不是游标

这是因为各种修饰符(如.limit().skip()等)和其他选项不适用于聚合结果的上下文。因此,对于这种类型的游标,$maxTimeMS不是一个有效的选项。

此外,即使在有效的地方,它也不会做你认为它会做的事情。原因是“游标”执行只在“聚合管道”执行完成后计算,因此在本例中,只需获取结果。

查看.currentOp().killOp()实现,了解控制长期运行的聚合任务的其他方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24691093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档