包含数组的Firestore复合索引的JSON格式是什么?

时间:2018-10-30 19:06:25

标签: firebase google-cloud-firestore

我想在一个列(例如documents)上使用array-contains来过滤集合(我们称其为keywords),然后在另一列(例如name)上进行排序。

我能够在firebase控制台中创建此复合索引,但是我只能猜测将其添加到firestore.indexes.json的格式。

很遗憾,我们无法从控制台下载索引文件。

3 个答案:

答案 0 :(得分:10)

将模式设置为ARRAY_CONTAINS:

{
      "collectionId": "documents",
      "fields": [
        {
          "fieldPath": "keywords",
          "mode": "ARRAY_CONTAINS"
        },
        {
          "fieldPath": "name",
          "mode": "ASCENDING"
        }
  ]
}

您还可以从Firebase CLi中以JSON list your current Cloud Firestore indexes的方式使用

firebase firestore:indexes

答案 1 :(得分:3)

导出Firestore索引

firebase firestore:indexes > firestore.indexes.json

注意!这将替换 firestore.indexes.json 中的所有内容。

或者如果您的 .firebaserc 中有多个firebase项目:

"projects": {
    "production": "prod-v6909",
    "staging": "prod-c6020"
}

然后您可以像这样导出:

firebase --project staging firestore:indexes > firestore.indexes.json

答案 2 :(得分:1)

您还可以从JSON中以JSON列出当前的Cloud Firestore索引 Firebase CLi:firebase firestore:indexes

对我来说,导出集合组索引时,这会导出错误的格式化程序json。命令行忘记关闭索引上的数组通知器:

{
  "indexes": [],
  "fieldOverrides": [
    {
      "collectionGroup": "restaurants_users_config",
      "fieldPath": "user",
      "indexes": [
        {
          "order": "ASCENDING",
          "queryScope": "COLLECTION"
        },
        {
          "order": "DESCENDING",
          "queryScope": "COLLECTION"
        },
        {
          "arrayConfig": "CONTAINS",
          "queryScope": "COLLECTION"
        },
        {
          "order": "ASCENDING",
          "queryScope": "COLLECTION_GROUP"
        }
    }
  ]
}

有什么建议吗?手动修复json数组是正确的吗?

**编辑 修复:Firebase升级8.2.0→8.4.1已修复