如何使用py-ravendb列出RavenDB v5.4+数据库中的所有集合?
在RavenDB v5.4+中用py-ravendb列出所有集合
你的代码报错是因为database_commands在py-ravendb的新版本中已被移除,RavenDB v5+改用**维护操作(Maintenance Operations)**来处理这类系统级查询。以下是正确的实现方式:
完整代码示例
from ravendb import DocumentStore, GetCollectionsOperation URLS = ['http://localhost:8080'] DB_NAME = 'my-db' store = DocumentStore(URLS, DB_NAME) store.initialize() # 发送获取集合的维护操作 collections_data = store.maintenance.database.send(GetCollectionsOperation()) # 提取所有集合名称(返回结果是{集合名: 文档数}的字典) collections = list(collections_data.keys()) print(collections)
关键说明
- 必须导入
GetCollectionsOperation类,这是官方提供的专门用于查询集合的操作对象 - 通过
store.maintenance.database.send()执行操作,该方法是v5+客户端处理数据库级维护任务的标准入口 - 返回结果是一个字典,键为集合名称,值为对应集合的文档总数;如果只需要集合名,直接取字典的
keys()即可
分页查询(对应原代码的0,50参数)
如果需要分页获取集合,可以给GetCollectionsOperation传入start和page_size参数:
# 从第0个开始,最多返回50个集合 collections_data = store.maintenance.database.send(GetCollectionsOperation(start=0, page_size=50))
内容的提问来源于stack exchange,提问作者Julián
相关产品推荐
相关产品推荐

