Firebase OR查询从Flutter cloud_firestore包的4.5.0版本开始可用。我正在使用cloud_firestore:4.8.2但我的OR查询不起作用。下面是我的代码:
final ref = FirebaseFirestore.instance.collection('users');
final query = await ref.where(
Filter.or(
Filter('followerCount', isGreaterThanOrEqualTo: followerCount),
Filter('followingCount', isGreaterThanOrEqualTo: followingCount),
),
).get();
根据GitHub上的这条评论,代码似乎是正确的:
https://github.com/firebase/flutterfire/pull/10678#issuecomment-1490300789
但是我得到了这个错误:
Firebase错误:无效查询。所有地方过滤器与不等式(<,<=,!=、not-in、>或>=)必须在同一字段上。但是你在'followerCount'和'followingCount'上有不等式过滤器
有什么想法吗
1条答案
按热度按时间sg2wtvxw1#
这个问题与使用OR条件无关,而是因为您试图对两个不同的字段执行范围筛选。正如错误消息所说,所有所谓的不等式过滤器必须在同一字段上。
来自查询限制的文档:
在复合查询中,range(
<
,<=
,>
,>=
)和not equals(!=
,not-in
)比较必须在同一字段上进行筛选。