Firebase 如何在集合云Firestore中获取文档ID列表?
我有一个带有生成标识符的文档集合。问题是:是否可以在不查询所有文档数据的情况下获取标识符列表?将这些密钥存储在单独的集合中是否更好?答案取决于您尝试使用的API 对于移动/网络SDK来说,由于这些客户端的存在,您无法满足自己的要求 对于服务器SDK可以执行空投影,即Firebase 如何在集合云Firestore中获取文档ID列表?,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我有一个带有生成标识符的文档集合。问题是:是否可以在不查询所有文档数据的情况下获取标识符列表?将这些密钥存储在单独的集合中是否更好?答案取决于您尝试使用的API 对于移动/网络SDK来说,由于这些客户端的存在,您无法满足自己的要求 对于服务器SDK可以执行空投影,即 db.collection('foo').select() 在这种情况下,服务器将向您发送匹配的文档,但将忽略查询结果中的所有字段 对于REST API,您可以使用运行查询执行等效操作,该查询包含“\uuuuu name\uuuu
db.collection('foo').select()
在这种情况下,服务器将向您发送匹配的文档,但将忽略查询结果中的所有字段
对于REST API,您可以使用运行查询
执行等效操作,该查询包含“\uuuuu name\uuuuu”
字段掩码,如下所示:
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'
根据需要替换
我的项目
和我的收藏
。请注意,“from”
中的“collectionId”
只是最右边的名称组件。如果您希望子集合中的键,REST API希望父文档名称出现在“parent”
字段中。答案取决于您尝试使用的API
对于移动/网络SDK来说,由于这些客户端的存在,您无法满足自己的要求
对于服务器SDK可以执行空投影,即
db.collection('foo').select()
在这种情况下,服务器将向您发送匹配的文档,但将忽略查询结果中的所有字段
对于REST API,您可以使用运行查询
执行等效操作,该查询包含“\uuuuu name\uuuuu”
字段掩码,如下所示:
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'
根据需要替换
我的项目
和我的收藏
。请注意,“from”
中的“collectionId”
只是最右边的名称组件。如果您希望子集合中有键,REST API希望父文档名称出现在“parent”
字段中。在node.js运行时,您可以获得如下文档ID列表
const documentReferences = await admin.firestore()
.collection('someCollection')
.listDocuments()
const documentIds = documentReferences.map(it => it.id)
在node.js运行时,您可以获得如下文档ID列表
const documentReferences = await admin.firestore()
.collection('someCollection')
.listDocuments()
const documentIds = documentReferences.map(it => it.id)
在选择前有没有办法订购钥匙?我尝试了db.collection(…).orderBy(…).select().get(),但它似乎不起作用。任何帮助都将不胜感激!这个问题最好作为一个新问题来问,包括你尝试了什么,得到了什么结果,以及你期望的结果。也就是说,只要您要排序的字段也在您选择的字段中,它就应该可以工作。在执行查询之前,您可能需要在orderBy字段上创建索引。在WebSDK中,您可以看到报告此错误的好消息。根据错误的处理方式,它可能不会在管理中通过。您读取的每个文档都会计数,即使您只读取了文档名。@KristiánVelez:您误解了那里的文档。获取文档ID是一项与文档读取相同的任务。在选择之前有没有办法对密钥进行排序?我尝试了db.collection(…).orderBy(…).select().get(),但它似乎不起作用。任何帮助都将不胜感激!这个问题最好作为一个新问题来问,包括你尝试了什么,得到了什么结果,以及你期望的结果。也就是说,只要您要排序的字段也在您选择的字段中,它就应该可以工作。在执行查询之前,您可能需要在orderBy字段上创建索引。在WebSDK中,您可以看到报告此错误的好消息。根据错误的处理方式,它可能不会在管理中通过。您读取的每个文档都会计数,即使您只读取了文档名。@KristiánVelez:您误解了那里的文档。获取文档ID是一个计算为文档读取的过程。您可以使用它在函数中创建端点,应用程序可以调用该端点并返回所有文档ID的列表。您可以使用它在函数中创建端点,应用程序可以调用该端点并返回所有文档ID的列表。