域DB查询dart中属性的总和

ki0zmccv  于 2023-03-21  发布在  其他
关注(0)|答案(1)|浏览(145)

我一直在尝试使用flutter dart从我的realmdb中获取一个typesum。不幸的是,我一直收到一个运行时错误:

  • 领域例外(领域例外:错误代码:36 .信息:运算'.@sum'无法应用于属性'type',因为它不是列表)*
    这是我的数据库架构:

导入“包:领域/领域. dart”;

part 'realmdb.g.dart';

@RealmModel()
class _Item {
  @MapTo('_id')
  @PrimaryKey()
  late ObjectId id;
  late String type;
  late String description;
  late double value;

  @MapTo('owner_id')
  late String ownerId;

  DateTime? date;
}

查询:

var杂货=领域.查询('type.@sum.value ==“杂货”');

这是我收藏的一份文档:

{"_id":{"$oid":"6416459ebae4d0e8702d0e27"},"date":{"$date":{"$numberLong":"1679181214346"}},"description":"Bit Coin","owner_id":"6414e8ad4791938608072411","type":"Crypto","value":{"$numberDouble":"5987.0"}}

我也想从任何类型中获取总和。像“杂货”总和= 365,或“休闲”总和= 643等。
即使在阅读了https://www.mongodb.com/docs/realm/realm-query-language/的官方网站后,通过转换他们的例子

"items.@sum.progressMinutes > 100" into 'value.@sum.type =="Groceries"' i

还是不行。
有人知道怎么解决吗?
我真的很感激你的帮助。
先谢谢你了。
奥拉塞比88
var杂货=领域.查询('type.@sum.value ==“杂货”');

xytpbqjk

xytpbqjk1#

Flutter SDK的查询功能目前不支持此功能,但您可以在纯dart中执行此操作:

var groceries = realm.query<Item>('type == "Groceries"');
var groceriesSum = groceries.fold(0, (sum, item) => sum + item.value);

虽然从SQL的Angular 来看,这似乎是一个代价高昂的操作,但对于Realm来说,代价并不高,因为它只从数据库读取值,而不是整个Item对象。

相关问题