当前位置: 首页 > 知识库问答 >
问题:

Firestore结构化查询按文档id搜索

孔正文
2023-03-14

我正在尝试按文档 ID 查询火库集合,但不是使用火库 CLI,而是使用结构化查询(因为我使用 Zapier 来自动执行某些工作流)。有没有办法按记录为字段进行搜索?到目前为止,我已经尝试了下面的代码和变体,我将名称替换为“documentId()”,“文档Id”,但似乎没有任何效果。当我使用名称时,我得到以下错误:

"error":"code": 400,"message":"key filter value be a Key","status":"INVALID_ARGUMENT"

"where": {
    "fieldFilter": {
        "field": {
            "fieldPath": "__name__"
        },
        "op": "EQUAL",
        "value": {
            "stringValue": "THE ID I WANT TO LOOK FOR"
         }
     }
}

共有2个答案

孟彦
2023-03-14

假设您想使用文档id获取特定的文档。您可能想参考下面的代码:

axios.get(`https://firestore.googleapis.com/v1/projects/<Project-ID>/databases/(default)/documents/<Collection-Name>/<Document-ID>`)
    .then(res => {
        console.log(res);
    })
    .catch(error => {
        console.log(error);
    });

上面的代码将获得所需的特定文档。如果要获取具有其字段特定值的文档 ID,则此处的此行:“fieldPath”:“__name__”应为字段名称而不是文档 ID。

axios.post(`https://firestore.googleapis.com/v1/projects/<Project-ID>/databases/(default)/documents:runQuery`,
{
  "structuredQuery": {
      "from": [{
          "collectionId": "<Collection-Name>"
      }],
      "where": {
          "fieldFilter": {
              "field": {
                  "fieldPath": "<FieldName>"
              },
              "op": "EQUAL",
              "value": {
                  stringValue: "<FieldValue>"
              }
          }
      }
  }
}).then(res => { 
  console.log(res) 
})
.catch(error => { 
  console.log(error) 
})

以上所有代码仅供参考,我使用axios从FiRecovery获取数据

欲了解更多信息,请查看此留档。

闾丘成双
2023-03-14

如果要使用__name__按id获取文档,请将值类型更改为referenceValue

"where": {
  "fieldFilter": {
    "field": {
      "fieldPath": "__name__"
    },
    "op": "EQUAL",
    "value": {
      "referenceValue": "projects/project_id/databases/database_id/documents/your_collection/doc_id"
    }
  }
}

 类似资料:
  • 正如我从“云火数据模型”指南中得到的,“每个文档都由一个名称标识。”是否可以通过该文档标识符(即名称或ID)查询集合? 例如,集合“Things”中的文档具有IDs、1、2等。: 是否可以查询 ID 小于 100 的文档?

  • 我正在寻找一种通过文档id而不是字段进行查询的方法。 可能是这样的: 在这种情况下,searchInput是一个不完整的documentId。 我在Stackoverflow上看到了一个解决方案,但它不适用于Flatter:https://stackoverflow.com/a/52252264/8539070 要记住的另一件事是,我正在尝试显示集合中与id的某些部分匹配的所有文档的列表。 谢谢你

  • 我想在firestore数据库中查询文档id。目前我有以下代码: 我没有结果。但当我查询其他字段时,它会起作用: 文档id的名称是如何调用的?

  • 为了查询子集合和父文档,我对firest的文档及其最佳实践有一些问题。我试图使用Typecript在我的Firebase函数中进行查询。 DB: ├── 用户(集合) │ └── 用户(ID为的文档) │ │ └── 计划(子集合) 我有一个数组中的用户ID列表,我需要从用户文档和当前文档的子集合计划中收集信息。 但是如何从用户文档和子集合(计划)文档(当前)中获取数据,我不知道在场景中最有效的查

  • 我有文档,其中包含子集合。现在,我想获取子集合中至少有一项的所有项目。这可能吗? 类似于: < code>getDocs(collection(getDB()," Projects)),其中(" Items.size ","

  • 谁能帮我用mongojack java驱动程序在mongodb子文档上为条件编写等效的查询 db.parentdocs.find({“subdoc._id”:ObjectId(“542d916a18ee9cfa2daeae15”)}) 这里subdoc是parentdoc文档中的一个子文档。我可以使用其他属性查询,但不能使用id BasicDBObject查询=新的BasicDBObject();