Firestore:如何查询DocumentID以子字符串开头的文档?

时间:2019-11-05 00:58:19

标签: firebase google-cloud-firestore

我正在尝试查询所有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 firestoreimport firebase导致错误。

1 个答案:

答案 0 :(得分:1)

  

如何查询DocumentID以子字符串开头的文档?

目前无法实现。

  

我没有在网上找到任何可以在文档ID字段中说明如何执行此操作的东西。

您没有找到任何东西,因为这样的查询不存在。

  

我的研究告诉我,在where()中使用'<='可以得到字段值

是的,这是您现在唯一的选择。因此,将现在已成为文档ID的所有Geohash作为文档中新的(geohash)属性的值添加。

  

我还发现这是一个潜在的解决方案:

     

docs = mycolRef.where(firebase.firestore.FieldPath.documentId(),'>',somestring).stream();

不幸的是,您不能这样做,因此会出现错误。

还有一点要注意的是,在Firestore中,一旦存在文档ID,就无法更改它。所有这些数据都是不可变的。相反,您可以做的是阅读所有文档,更改文档ID,然后全部放回原处。