用于通过pymongo查询cosmosDB的分页光标的Count()Curser

时间:2018-07-19 20:33:17

标签: python mongodb pymongo azure-cosmosdb

我想在一个大集合上运行查询,但需要将请求分解为适合消息大小的内容。所以我得到了这样的东西:

class PaginatedCursor(object):
    def __init__(self, cur, limit=100):
    self.cur = cur
    self.limit = limit
    self.count = cur.count()

    def __iter__(self):
        skipper = count(start=0, step=self.limit)
        for skip in skipper:
            if skip >= self.count:
               break

            for document in self.cur.skip(skip).limit(self.limit):
                yield document`

请参阅pymongo - Message length is larger than server max message size

cur = collection.find({#some query})
for d in PaginatedCursor(cur, 100):
    print(d) #or whatever

问题是,cosmosDB不允许在分区集合中使用count(),存在以下错误:

  

命令中的查询必须针对单个分片键

请参阅https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/19676359-support-count-of-a-query-on-a-partitioned-collecti

是否存在另一种设计分页光标的方法,还是使用计数的方法(比较Getting 'query in command must target a single shard')?

谢谢

0 个答案:

没有答案