【问题标题】:How to create a composite index that includes a map?如何创建包含地图的复合索引?
【发布时间】:2019-06-04 17:42:30
【问题描述】:

我有一个包含三个属性的集合,我想为其创建复合索引,但不断收到错误消息,提示我需要为此查询创建复合索引。这是集合数据模型:

active: boolean
date: string
nameComponents: map
    "nameComponent": boolean

文档看起来像这样:

active: true
date: "2019-02-18"
nameComponents:
    "pineapple": true
    "pie": true

查询看起来像这样:

Firestore.firestore().collection("someCollection").whereField("active", isEqualTo: true).whereField("nameComponents.pineapple", isEqualTo: true).whereField("date", isLessThanOrEqualTo: "2019-12-31").whereField("date", isGreaterThanOrEqualTo: "2019-01-01")

我创建了以下复合索引,但没有任何运气:

活动:升序,日期:升序,nameComponents:升序

如何为此查询创建复合索引?并且总是在调试器中创建复合索引的链接,因为一直以来,都将我带到一个显示未知错误的网页。

【问题讨论】:

  • 如果在控制台中创建复合查询的机制不起作用,并且您遇到一些未知错误,您应该为此联系 Firebase 支持,并提供您的完整复制步骤。 firebase.google.com/support/contact
  • 对于我的问题,这个问题中的查询甚至可以执行吗?复合索引可以包含地图吗?
  • 我从未尝试过,但文档并没有说你不能。如果控制台出于任何原因向您提供未知错误,您仍应寻求支持。

标签: firebase google-cloud-firestore


【解决方案1】:

更新:很遗憾,这是不可能的。复合索引要求映射中的每个键都有自己的索引。并且由于 Firestore 对数据库(而不是集合)中允许的复合索引数量的限制,这绝对是大型地图的反模式。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-26
  • 1970-01-01
  • 2014-09-22
  • 1970-01-01
相关资源
最近更新 更多