为什么包含orderBy语句不返回所有记录?

时间:2019-06-05 06:09:14

标签: firebase google-cloud-firestore

查询Firestore时,如果我包含orderBy,它将限制为10条记录。删除orderBy将返回所有100条记录。

我尝试通过不同的字段(例如id)进行排序,但是无论结果如何都会受到限制。我还根据需要创建了适当的复合索引。

以下内容将返回10行:

db.collection('transactions').where('uid', '==', 'myuserid').orderBy('transaction.date', 'desc').orderBy('id', 'asc').limit(100).get()

没有orderBy,则返回预期的100行。但是,当然,结果是无序的:

db.collection('transactions').where('uid', '==', 'myuserid').limit(100).get()

编辑:还发现执行1 orderBy似乎也可以:

db.collection('transactions').where('uid', '==', 'myuserid').orderBy('transaction.date', 'desc').limit(100).get()

我猜这与索引和数据彼此不相邻有关。但是没有索引的可见性,就无法知道。但是,始终有10个结果非常奇怪。

2 个答案:

答案 0 :(得分:0)

不确定是否有帮助,但是默认情况下,根据所提供字段的存在,对请求字段的orderBy也会进行过滤。返回的结果集不包含没有请求字段的记录。

引用:Google Firestore order/limit

答案 1 :(得分:0)

感谢每个人的评论,他们将我引向了解决方案-碰巧有10个文档中有一个“ id”键,因此这就是为什么只有这些文档才出现的原因。我错误地认为,通过按“ id”进行排序,它将按文档的ID进行排序。