我有一组带有生成标识符的文档。问题是:是否可以在不查询所有文档数据的情况下获取标识符列表?将这些密钥存储在单独的集合中会更好吗?
答案 0 :(得分:9)
答案取决于您尝试使用的API。
对于移动/网络SDK ,由于这些客户do not support projections of any kind无法满足您的要求。
对于服务器SDK ,您可以进行空投影,即
db.collection('foo').select()
在这种情况下,服务器会向您发送匹配的文档,但会省略查询结果中的所有字段。
对于 REST API ,您可以使用包含字段掩码runQuery
的{{1}}执行等效操作,如下所示:
'__name__'
视情况替换curl -vsH 'Content-Type: application/json' \
--data '{
"parent": "projects/my-project/databases/(default)",
"structuredQuery":{
"from": [{"collectionId": "my-collection"}],
"select": {
"fields": [{"fieldPath":"__name__"}]
}
}
}' \
'https://firestore.googleapis.com/v1beta1/projects/my-project/databases/(default)/documents:runQuery'
和my-project
。请注意,my-collection
中的"collectionId"
只是最正确的名称组件。如果您想在子集合中使用密钥,则REST API需要"from"
字段中的父文档名称。
答案 1 :(得分:5)
在node.js运行时,您可以获得这样的文档ID列表
const documentReferences = await admin.firestore()
.collection('someCollection')
.listDocuments()
const documentIds = documentReferences.map(it => it.id)