Javascript Firestore错误:无法在不同属性上使用多个条件where子句

Javascript Firestore错误:无法在不同属性上使用多个条件where子句,javascript,node.js,firebase,google-cloud-firestore,Javascript,Node.js,Firebase,Google Cloud Firestore,我尝试在Firestore查询中使用多个“where”过滤器,我的查询是基于上述内容的 我的问题是: let colRef = firebase.firestore().collectionGroup('volumes') colRef = colRef.where('days', 'array-contains', day) colRef = colRef.where('start_time', '<=', time) colRef = colRef.where('end_time',

我尝试在Firestore查询中使用多个“where”过滤器,我的查询是基于上述内容的

我的问题是:

let colRef = firebase.firestore().collectionGroup('volumes')
colRef = colRef.where('days', 'array-contains', day)
colRef = colRef.where('start_time', '<=', time)
colRef = colRef.where('end_time', '>', time)
colRef = colRef.where('volume', '>', 0)
const snapshot = await colRef.get()
let colRef=firebase.firestore().collectionGroup('volumes'))
colRef=colRef.where('days','array contains','day)
colRef=colRef.where('开始时间','',时间)
colRef=colRef.where('volume','>',0)
const snapshot=await colRef.get()
我收到上述错误:

错误:3无效的\u参数:不能在多个 性质

我检查了一下,发现:

只能在单个字段上执行范围(=)或不等于(!=)比较

这是Firestore查询的一个巨大限制。我是否缺少实现该查询的另一个选项


谢谢

Firestore中的范围条件只能应用于单个字段。这是一个硬限制,有很好的文档记录(正如您已经在问题中包含的)

Firestore仅在能够满足其性能保证的情况下提供API,其中最主要的一个是查询返回的结果的时间仅与返回的数据量相关,而不与需要搜索这些结果的数据量相关


如果您需要比FixSt店提供更灵活的查询,则应该考虑使用另一个数据库。但您可能会失去Firestore对其他数据库的性能保证。

这有点令人失望,因为在某些情况下,性能不是必需的,但价格效率确实如此。我认为Firestore的成本更多地取决于资源性能(如CPU和RAM),而不是读取量。不准确的查询会导致无效的读取,即使对于小型应用程序也会花费大量的金钱。我认为Firebase有巨大的潜力,但它必须改变定价方式,更多地基于资源。感谢您诚实的回答。此操作缺乏支持与成本无关,而纯粹是因为性能。由于Firestore工程师还没有找到一种方法来保证多字段范围查询的性能,因此他们不受支持。为什么客户要为非资源的东西付费?(如CPU、RAM、带宽等)。Firestore“阅读”不是一种资源,它只是一种获取更多金钱的方式。我更喜欢为我使用的资源付费,而不是“读”、“写”或“删除”。客户“阅读”在Firestore上是一项非常昂贵的服务,这是不合理的。我可以阅读一个一百万行的文档,效率不高,或者我可以通过DocId获得一个小文档,我将被支付SMAE账单。这是毫无意义的。