javascript - 在 firebase 查询中使用 2 个 order 参数,但结果不是由它们中的任何一个排序的
问题描述
我有以下查询
admin.firestore()
.collection("articles")
.orderBy("publishDate", "desc")
.where("publishDate", ">=", mintime)
.orderBy("views", "desc")
.limit(10);
查询给出了一周内按浏览量排序的前 10 篇文章我没有错误,但结果文章不一定是浏览次数最高的文章。小备注返回的 10 篇文章也没有排序,为了解决这个问题,我只是在从 firebase 获取它们后对 10 篇文章进行了排序,但这让我觉得我做错了什么。那么有没有办法修复这个查询以可靠地获取某个日期内的热门文章并按视图排序?
编辑
我将尝试对这个查询进行一些不同的解释:
admin.firestore()
.collection("articles")
.orderBy("publishDate", "desc")
.where("publishDate", ">=", mintime)
.orderBy("views", "desc")
.limit(10);
而这个查询
admin.firestore()
.collection("articles")
.orderBy("publishDate", "desc")
.where("publishDate", ">=", mintime)
.limit(10);
返回相同的结果,就像.orderBy("views", "desc")
被忽略了,我该如何解决这个问题?
解决方案
返回的 10 篇文章也没有排序,为了解决这个问题,我只是在从 firebase 获取它们后对 10 篇文章进行了排序
这正是您必须做的,鉴于您现在的查询,没有任何解决方法可以让 Firestore 为您执行此操作。
二级 orderBy 不会再次对整个结果集重新排序。它只是对由主要排序值聚集的值内的文档进行排序。文档中的示例涵盖了此行为。查找显示“您也可以按多个字段排序”的部分。
推荐阅读
- django - 如何将总和与除法一起使用?
- python-3.x - 当一个类的特征与另一个类重叠时,哪种机器学习模型效果很好?
- javascript - 无法通过为输入字段提供值来添加选择字段?
- gremlin - Gremlin 嵌套循环和双重重复语句
- ruby-on-rails - 对控制器中的不同参数有单独的更新操作?
- python-3.x - 有没有可以看到python方法签名的网站?
- hadoop - Hadoop 多节点集群太慢。如何提高数据处理速度?
- python - 在python中转换日期时间分钟和年份
- python - 如何将 Airflow 与 Github 集成以运行脚本
- excel - 执行存储在宏中的字符串中的excel公式