Firestore查询:能否在.where()中使用字段当前值计算?
Firestore查询中能否直接用字段当前值+数值作为筛选条件?
不行,Firestore的where查询不支持直接引用文档自身的字段值进行计算,你没法在同一条查询语句里实现isEqualTo: 字段当前值 + 50这类逻辑。
原因说明
Firestore的查询条件是基于你传入的固定值进行匹配,或者使用它提供的预定义比较操作符(如greaterThan、lessThan),但不允许在查询条件中引用目标文档的字段值做运算。
对应场景的解决方案
如果是要筛选满足「count + 50 = 某个固定值」的文档
你可以反向推导计算出需要匹配的count值,再传入查询条件:// 假设你要找count +50等于200的文档 FirebaseFirestore.instance.collection('users') .where('count', isEqualTo: 200 - 50) // 即匹配count=150的文档 .get();如果是要更新文档时给count字段增加50
不要用查询+更新的方式,直接使用Firestore的原子增量操作,它会在服务器端安全地对字段当前值进行累加:FirebaseFirestore.instance.collection('users').doc('目标文档ID') .update({ 'count': FieldValue.increment(50) });
内容的提问来源于stack exchange,提问作者Mohammed Hamdan
相关产品推荐
相关产品推荐

