Firestore Python集合查询是否有等效docs.exists的文档存在判断方法
针对Firestore集合查询判断匹配文档存在性的优化方案
Firestore没有为集合查询提供和单文档docs.exists完全对等的直接判断方法,但可以通过官方提供的内置属性优化你的实现,完全避免冗余的遍历操作,同时保证查询效率最优。
你原本的查询已经加了.limit(1),这个操作已经把查询开销压到了最低:Firestore只会扫描到第一条符合条件的文档就返回结果,不会遍历全集合,也不会拉取多余数据。你可以直接用查询返回的QuerySnapshot对象内置的empty属性判断是否有匹配文档,不需要额外遍历生成数组。
优化后的代码如下:
code_ref = db.collection(u'col1') code_query = code_ref.limit(1) code_docs = code_query.get() if not code_docs.empty: # 存在匹配文档 else: # 无匹配文档
注意事项
- 一定要保留
.limit(1)配置,如果移除该配置,就算使用empty属性判断,Firestore也会拉取所有匹配的文档后才返回结果,会产生不必要的性能开销和读写费用。 - 该实现的查询效率和你预期的
exists等效方法完全一致,没有额外性能损耗。
内容的提问来源于stack exchange,提问作者Jack tileman
相关产品推荐
相关产品推荐

