Firebase 如何在集合云Firestore中获取文档ID列表?

Firebase 如何在集合云Firestore中获取文档ID列表?,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我有一个带有生成标识符的文档集合。问题是:是否可以在不查询所有文档数据的情况下获取标识符列表?将这些密钥存储在单独的集合中是否更好?答案取决于您尝试使用的API 对于移动/网络SDK来说,由于这些客户端的存在,您无法满足自己的要求 对于服务器SDK可以执行空投影,即 db.collection('foo').select() 在这种情况下,服务器将向您发送匹配的文档,但将忽略查询结果中的所有字段 对于REST API,您可以使用运行查询执行等效操作,该查询包含“\uuuuu name\uuuu

我有一个带有生成标识符的文档集合。问题是:是否可以在不查询所有文档数据的情况下获取标识符列表?将这些密钥存储在单独的集合中是否更好?

答案取决于您尝试使用的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)

在选择前有没有办法订购钥匙?我尝试了db.collection(…).orderBy(…).select().get(),但它似乎不起作用。任何帮助都将不胜感激!这个问题最好作为一个新问题来问,包括你尝试了什么,得到了什么结果,以及你期望的结果。也就是说,只要您要排序的字段也在您选择的字段中,它就应该可以工作。在执行查询之前,您可能需要在orderBy字段上创建索引。在WebSDK中,您可以看到报告此错误的好消息。根据错误的处理方式,它可能不会在管理中通过。您读取的每个文档都会计数,即使您只读取了文档名。@KristiánVelez:您误解了那里的文档。获取文档ID是一项计算文档读取的任务。您可以使用它在函数中创建端点,应用程序可以调用该端点并返回所有文档ID的列表。