如何从具有不同结果的领域数据库查询java

如何从具有不同结果的领域数据库查询java,java,android,realm,nosql,Java,Android,Realm,Nosql,我有一个领域对象类,在其中存储了大量数据,假设我有一个字符串uid字段。我想得到uid名称,但在相同的uid名称上只有一次, 比如说 液体 AA AA BB 抄送 DD BB BB 我想得到公正 AA, BB 抄送 DD 只有一次。 我查阅了领域文档,但什么也找不到 感谢您的回答。更新: 可以使用distinct()为对象类获取不同的条目 // Returns the set of users that all have a different name RealmResults<User

我有一个
领域
对象类,在其中存储了大量数据,假设我有一个
字符串uid字段。我想得到uid名称,但在相同的uid名称上只有一次,
比如说

液体 AA

AA

BB

抄送

DD

BB

BB

我想得到公正 AA,

BB

抄送

DD

只有一次。 我查阅了领域文档,但什么也找不到


感谢您的回答。

更新:

可以使用distinct()为对象类获取不同的条目

// Returns the set of users that all have a different name
RealmResults<User> users = realm.where(User.class).distinct("name");
//返回所有具有不同名称的用户集
RealmResults users=realm.where(User.class).distinct(“名称”);
注: .distinct仅适用于已编制索引的字段(@Index或@PrimaryKey)。 它不适用于子对象属性

您可以在官方文档中找到有关此方法的更多信息。

请使用以下步骤在域上工作

将您的领域版本更新为领域:1.2.0。因为在旧版本中,distinct无法正常工作

将@Index属性添加到要应用distinct的变量

像这样执行查询

RealmResult<Example> realmReault =realm.where(Example.class).distinct("uid");

以上代码经过测试,工作正常

其他答案几乎正确,但仍然不完整

其他解决方案需要使用
.findAll()
,以便返回值保持RealmResult类型

RealmResult<Example> realmReault =realm.where(Example.class).distinct("uid").findAll();
RealmResult realmReault=realm.where(Example.class).distinct(“uid”).findAll();

关于realm gradle插件:6.0.2,

@MD-hi,谢谢您的回答,但该领域没有sql数据库。我们怎么能做到这一点?我看不到任何直接的能力来做到这一点。也许,您需要将查询结果以迭代方式添加到
集合
以删除重复项。realm.distinct在realm 1.1.0 android版本中不起作用。请帮助me@pradeepbishnoi更新了我的答案。请检查。他们已经更改了。您可以在他们的更改日志中看到更改列表。如果想知道我们忽略的项目数,该怎么办?
RealmResult<Example> realmReault =realm.where(Example.class).distinct("uid").findAll();