我正在尝试查询所有DocumentID以我的字符串开头的文档。我的研究告诉我,可以在where()中使用'<='来获得字段值,但是我没有在网上找到任何可以在文档ID字段中执行此操作的方法。
之所以这样做,是因为我的表包含Geohashes作为具有数据的DocumentID(高精度),并且我希望基于低精度Geohash来获取这些文档。
我还发现这是一个潜在的解决方案:
docs = mycolRef.where(firebase.firestore.FieldPath.documentId(), '>', somestring).stream();
但是,这会产生错误:“ NameError:未定义名称'firebase'”
我正在按照本指南中的说明通过google.cloud导入firestore:(https://cloud.google.com/firestore/docs/quickstart-servers)
from firebase import firestore
或import firebase
导致错误。
答案 0 :(得分:1)
如何查询DocumentID以子字符串开头的文档?
目前无法实现。
我没有在网上找到任何可以在文档ID字段中说明如何执行此操作的东西。
您没有找到任何东西,因为这样的查询不存在。
我的研究告诉我,在where()中使用'<='可以得到字段值
是的,这是您现在唯一的选择。因此,将现在已成为文档ID的所有Geohash作为文档中新的(geohash)属性的值添加。
我还发现这是一个潜在的解决方案:
docs = mycolRef.where(firebase.firestore.FieldPath.documentId(),'>',somestring).stream();
不幸的是,您不能这样做,因此会出现错误。
还有一点要注意的是,在Firestore中,一旦存在文档ID,就无法更改它。所有这些数据都是不可变的。相反,您可以做的是阅读所有文档,更改文档ID,然后全部放回原处。