【问题标题】:Can't iterate entire pymongo cursor when using $in query使用 $in 查询时无法迭代整个 pymongo 游标
【发布时间】:2018-04-19 15:17:36
【问题描述】:

我正在尝试迭代 CosmosDB 的 MongoDB API 返回的结果集。我正在使用 pymongo 连接到数据库。

查询看起来像:

items = item_collection.find(filter={'store_id': 151, 'dept_id': {'$in': [17, 19]}})

但是,我只能在光标为空之前遍历 101 项目。调用items.count() 表明结果集中肯定有更多结果:

tally = 0

for item in items:
    tally += 1

print('Cursor total: %s --- Tally: %s' % (items.count(), tally))

# prints 'Cursor total: 627 --- Tally: 101'

也许不是巧合,101 是 Mongo 查询返回的第一批的默认大小。

现在,如果我删除查询的 $in 部分,并发出类似以下内容:

item_collection.find(filter={'store_id': 151, 'dept_id': 17})

然后tallyitems.count() 产生相同的数字。

欢迎任何关于为什么会发生这种情况的见解!

【问题讨论】:

  • 嗨,有什么更新吗?
  • @JayGong 还没有。当我听到什么时,我会在这里发布。

标签: mongodb azure pymongo azure-cosmosdb


【解决方案1】:

我也见过你类似的情况,根据这个案例的分享:Cosmos Mongo API "In" Array expression issue,看来$in的问题是微软这边的问题,你可以等bug修复了。

ms反馈如下:

感谢大卫报告此事!我调查了这个问题,这是一个 我们这边的错误在多种条件下表现出来。一世 已经对其进行了修复,并将在周末检查它 (然后取决于我们的部署周期将修复传播给所有 世界各地的数据中心)。如果您有任何疑问,请告诉我 不工作,正在阻止你。最好的问候,Orestis

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 2020-02-04
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 2019-09-06
    • 2014-10-01
    相关资源
    最近更新 更多