我想在一个列(例如documents
)上使用array-contains
来过滤集合(我们称其为keywords
),然后在另一列(例如name
)上进行排序。
我能够在firebase控制台中创建此复合索引,但是我只能猜测将其添加到firestore.indexes.json
的格式。
很遗憾,我们无法从控制台下载索引文件。
答案 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已修复