从Realm数据库获取随机记录(Swift)

0lvr5msh  于 2023-01-01  发布在  Swift
关注(0)|答案(1)|浏览(118)

我正在尝试从我的Swift Realm数据库中获取随机记录。
我以前在mongoDB中使用过sample函数,所以我认为在Realm中一定有一个等价的函数(它基于mongoDB,对吗?)
我找不到任何关于这样一个函数的文档,我只找到了建议获取整个集合然后选择一个随机记录[ 12 ]的搜索结果。
我错过了什么明显的,有没有更好的方法呢?
下面是一个mongoDB查询示例:

db.Words.aggregate([
{ $match: { gender: gender } },
{ $sample: { size: 1 } }
])
pbossiut

pbossiut1#

为清楚起见,问题中的代码不是本地或同步的Realm Swift SDK的一部分,但它是使用应用程序服务直接查询Atlas的一部分,因此它对非同步或非本地应用程序有效。(如果可能,请使用Swift SDK!)
如果我们使用SDK执行此操作,则实际上可以利用高级Swift函数使用.randomElement()返回结果
假设一个PersonClass具有name属性

class PersonClass: Object {
   @Persisted var name = ""
}

我们可以使用这段代码从Realm返回一个随机的人,并将他们的名字输出到控制台

if let randomPerson = realm.objects(PersonClass.self).randomElement() {
    print(randomPerson.name)
} else {
    print("no data was returned)")
}

相关问题