ravendb python api,查询总是返回128

2024-04-28 10:07:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在查询我的ravendb实例。我的目标集合包含超过3万个文档。我将pyravendb与python3结合使用。你知道吗

我使用以下代码查询索引:

result_ = self.store.database_commands.query(index_name="Raven/DocumentsByEntityName",
                                                    index_query=IndexQuery("Tag:MyCollection",total_size=128,skipped_results=start))
if len(result_['Results']) < 128:
     return

开始成为每次查询时递增128的偏移量变量。 当我运行这个代码时,结果的长度总是128,这导致了一个无限循环。你知道吗

你知道为什么会这样吗?你知道吗


Tags: 实例store代码name文档self目标index
3条回答

我知道这并不能完全回答你的问题,但是你考虑过使用RavenDB的流媒体功能吗?https://ravendb.net/docs/article-page/3.5/csharp/client-api/session/querying/how-to-stream-query-results

在许多情况下,处理大量文档时,这可能比使用Query()进行迭代更快、更简单。你知道吗

但是,请注意,不会跟踪流化对象。意味着对这些对象的更改以及随后的SaveChanges()-调用不会对RavenDB中存储的文档产生任何影响。你知道吗

问题是我使用的参数。正确的参数应该是start=offset,您希望跳过它,而不是skipped\u results=offset。你知道吗

正确的代码如下:

result_ = self.store.database_commands.query(index_name="Raven/DocumentsByEntityName",
                                                    index_query=IndexQuery("Tag:MyCollection",total_size=128,skipped_results=0, default_operator=None,start=offset)) 
#blablabla
offset+=128
if len(result_['Results']) < 128:
         return

看看我的作品 Get all of a collection's documents id's RavenDB for a "per-document" modification

在pyravendbv3.5.3.5中,我更新了IndexQuery,现在您可以跳过或获取比128更少或更多的文档。你知道吗

另一件事不使用总大小或跳过的结果(它们将被删除)

相关问题 更多 >