将等式运算符与不等式运算符与 firestore flutter 结合起来

问题描述 投票:0回答:1

我正在尝试执行一个不起作用的查询:

Query<Map<String, dynamic>> reference =
        firebaseFirestore.collection(path);
    reference = reference.where('userId', isNotEqualTo: userId);
    reference = reference.where('timestamp', isGreaterThan: lastReadTime);

将两者结合起来是行不通的。

我也尝试过:

Query<Map<String, dynamic>> reference =
        firebaseFirestore.collection(path);
    reference = reference.where('userId', isNotEqualTo: userId).where('timestamp', isGreaterThan: lastReadTime);

debugPrint("reference : ${reference.parameters}");

结果相同。 后面的参数不被考虑,如下日志所示。

reference : {where: [[FieldPath([userId]), !=, vxwe1qMIUkVa...]], orderBy: [], startAt: null, startAfter: null, endAt: null, endBefore: null, limit: null, limitToLast: null}

如您所见,

timestamp
缺少打印的参数。 查询的结果也不是我所期望的,因为
timestamp
被忽略了。

我对

userId
timestamp
有一个综合索引。

flutter firebase google-cloud-firestore
1个回答
0
投票

我想通了。基本上现在不可能,范围和不等于比较必须在同一字段上进行,如文档中所述。

In a compound query, range (<, <=, >, >=) and not equals (!=, not-in) comparisons must all filter on the same field.

查询运算符

© www.soinside.com 2019 - 2024. All rights reserved.