【发布时间】:2020-02-17 20:17:23
【问题描述】:
如何运行查询,仅检索过去 24 小时的帖子,然后按点击次数排序,然后按时间戳对点击次数相同的帖子进行排序?
参考:
https://firebase.google.com/docs/firestore/query-data/order-limit-data
这是允许文档解释的(不是我想要的结果):
getRef = global.db.collection("AllSubmissions")
.orderBy('timestamp', 'desc')
.where("timestamp", ">", date24)
.orderBy('clicks', 'desc')
.startAfter(theDoc)
.limit(limit);
但这是我想要的:
getRef = global.db.collection("AllSubmissions")
.orderBy('clicks', 'desc')
.orderBy('timestamp', 'desc')
.where("timestamp", ">", date24)
.startAfter(theDoc)
.limit(limit);
为此我收到以下错误(如文档中所述):
错误:
错误:3 INVALID_ARGUMENT:不等式过滤器属性和第一排序顺序必须相同:时间戳和点击次数
是否有另一种方法来构建我错过的查询,或者这真的是 Firestore 限制吗?
P.S.:我确实为所有复合查询创建了索引。
【问题讨论】:
-
这能回答你的问题吗? Firestore order by two fields
-
@LouysPatriceBessette 它没有但感谢您的分享(我已经有多个“orderBy”的查询运行良好,这是一个带有 where() 的特定顺序不起作用)
-
@FrankvanPuffelen 看来这可以通过 MongoDB 实现? docs.mongodb.com/manual/indexes 有没有一种简单的方法可以将我的 Firestore 数据导出到 MongoDB,或者我是否必须编写自定义代码来重组数据?或者有什么方法可以实现我想要用我忽略的 Firestore 做的事情?
标签: javascript node.js firebase google-cloud-firestore