You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何在Isar数据库使用.max()聚合函数?

Isar数据库获取指定列最大值的正确写法

针对你的问题,Isar的.max()聚合函数需要直接作用在目标字段上,而非放在where()、filter()或findAll()之后。结合你的代码,有两种可行的写法:

方法一:利用索引字段生成的聚合方法

因为你给clientId字段添加了@Index注解,Isar会自动为该字段生成对应的聚合方法,直接调用即可:

Future<String> getMaxClientId() async {
  final isar = await Isar.open([ClientSchema]);
  final clientId = await isar.clients.clientId.max();
  return clientId == null ? '10000' : clientId;
}

方法二:使用maxBy()(无索引也适用)

如果字段未添加索引,或者需要更灵活的字段选择,可以用maxBy()方法传入字段选择器:

Future<String> getMaxClientId() async {
  final isar = await Isar.open([ClientSchema]);
  final clientId = await isar.clients.maxBy((client) => client.clientId);
  return clientId == null ? '10000' : clientId;
}

注意事项

你的clientId是字符串类型,但存储的是'10001'这类数字格式的字符串,Isar会按照字典序比较大小,这种情况下字典序和数字顺序一致,结果符合预期。

内容的提问来源于stack exchange,提问作者Roslan Amir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:10:32