使用结构化查询根据数组中的键获取值

时间:2019-04-19 19:55:03

标签: google-cloud-firestore

在我的Firestore中,我有一个结构如下所示的文件。

我正在尝试设置一个Zapier Zap,它将允许我根据storeId获取商店名称。它需要一个可获取数据的JSON结构化查询。

是否可以这样做,应该从哪里开始,我发现文档中缺少示例。我现在拥有的唯一查询如下所示,但是显然,由于所有数据都在一个文档中,因此该查询不起作用。

"where": {
    "fieldFilter": {
        "field": {
            "fieldPath": "stores/*/storeId"
        },
        "op": "EQUAL",
        "value": {
            "stringValue": "def"
        }
    }
}

文档结构

{ 
  "stores": {
   "0": {
      "storeId": "abc",
      "name": "Store 1"
   },
   "1": {
      "storeId": "def",
      "name": "Store 2"
   }
  }
}

1 个答案:

答案 0 :(得分:0)

我认为您不能使用数组字段来执行此操作,但是如果将该数组更改为映射字段,则可以。像这样:

mycollection/mydoc

{
  "someotherfield": "foo",
  "stores": {
     "abc": {
       "name": "Store 1"
      },
     "def": {
       "name": "Store 2"
      }
 }
}

现在您可以使用场掩码:

GET https://firestore.googleapis.com/v1/projects/MY-PROJECT/databases/(default)/documents/mycollection/mydoc?mask.fieldPaths=stores.abc.name

响应:

{
 "name": "projects/MY-PROJECT/databases/(default)/documents/mycollection/mydoc",
 "fields": {
  "stores": {
   "mapValue": {
    "fields": {
     "abc": {
      "mapValue": {
       "fields": {
        "name": {
         "stringValue": "Store 1"
        }
       }
      }
     }
    }
   }
  }
 },
 "createTime": "2019-04-20T19:14:01.792855Z",
 "updateTime": "2019-04-22T18:07:05.660561Z"
}