【发布时间】:2018-11-16 01:12:56
【问题描述】:
我遇到了一个对我来说非常不直观的 Firestore 问题,所以我想知道是否有人可以帮助我理解 Firestore 给出这个结果的原因。
假设我有一个名为“people”的集合,其中包含“firstName”和“lastName”字段。假设我在该集合中有 20 个文档,其姓氏为“Quaid”。然后我有一个字段“inCanada”,它只出现在这 20 个文档的一个子集中,比如说 5 个。其他 15 个文档没有该字段。
令人惊讶的是,使用该可选字段的 orderBy 子句实际上是在过滤结果集,而不仅仅是对结果集进行排序,与其他数据库相比,这对我来说没有意义。
在下面的示例中,我希望两个结果集都有 20 个元素,但是具有 orderBy 的第二个结果集只有存在该字段的那 5 个文档。
有人可以解释为什么 Firestore 会这样做吗?
const Admin = require('firebase-admin');
(async function () {
const initFirebase = require('../initFirebase');
initFirebase();
const people = Admin.firestore().collection('people');
const quaids = people.where('lastName', '==', 'Quaid')
const quaids1 = await quaids.get();
const quaids2 = await quaids.orderBy('inCanada', 'desc').get();
console.log(quaids1._size); // 20
console.log(quaids2._size); // 5
})();
【问题讨论】:
标签: firebase google-cloud-firestore