Android Firestore如何在各种查询中将文档ID用作字段

时间:2020-10-03 10:55:02

标签: android firebase google-cloud-firestore

在此页面Query firestore database for document id

我发现此javascript示例在where子句中使用documentId

db.collection('books').where(firebase.firestore.FieldPath.documentId(), '==', 'fK3ddutEpD2qQqRMXNW5').get()

相当于Android的是什么?我尝试使用

whereEqualTo(firebase.firestore.FieldPath.documentId(), 'fK3ddutEpD2qQqRMXNW5');

但是没有用

编辑:我不想使用

db.collection('books').document("fK3ddutEpD2qQqRMXNW5").get()

因为我想学习如何使用documentId作为字段,以便可以在其他查​​询中使用

.orderBy(firebase.firestore.FieldPath.documentId())

(来自Get data ordered by document Id in Firestore by Javascript?)在Android中

简而言之,Android中的firebase.firestore.FieldPath.documentId()等于什么?

3 个答案:

答案 0 :(得分:2)

您显示的内容应该可以正常工作。从FieldPath.documentId()的API文档中可以看到:

返回一个特殊的标记FieldPath,以引用文档的ID。可以在查询中用于按文档ID进行排序或过滤。

因此,您应该可以使用它来过滤文档ID。我能够毫无问题地执行这样的查询。如果对您不起作用,则可能是其他问题-可能您所请求的文档实际上不存在,或者您提供了错误的集合和ID。

请注意,按这样的文档ID进行过滤不适用于收集组查询。为此,您确实需要添加文档ID作为要过滤的字段。

答案 1 :(得分:1)

直接查询文档,而不是查询集合中的文档ID

db.collection('books').document("fK3ddutEpD2qQqRMXNW5").get()

有时候我们会错过那些直率的人!

答案 2 :(得分:1)

如果您不想使用:

db.collection('books').document("fK3ddutEpD2qQqRMXNW5").get()

您可以选择添加文档ID作为文档的属性,并使用以下查询:

db.collection("books").whereEqualTo("documentId", "fK3ddutEpD2qQqRMXNW5").get()

根据道格·史蒂文森(Doug Stevenson)的评论,事实证明:

db.collection("books").whereEqualTo(FieldPath.documentId(), "fK3ddutEpD2qQqRMXNW5").get()

实际可行,返回的结果与以下情况相同:

db.collection('books').document("fK3ddutEpD2qQqRMXNW5").get()

或者:

db.collection("books").whereEqualTo("documentId", "fK3ddutEpD2qQqRMXNW5").get()

现在,您只需要附加一个侦听器就可以了。