【问题标题】:Realm: Querying and Indexing with One-to-Many relationship领域:使用一对多关系进行查询和索引
【发布时间】:2015-12-17 13:04:29
【问题描述】:

让我们考虑一下 Person 和 Dog 的默认 Realm 示例。

名字为“A”的人有 3 只狗,它们的名字分别为“X”、“Y”、“Z”

名字为“B”的人有 2 条狗,名字分别为“X”、“Z”

所以代码将是

[realm beginWriteTransaction];

Person *personA = [Person createInRealm:realm withObject:@{@"name": @"A"}];
Person *personB = [Person createInRealm:realm withObject:@{@"name": @"B"}];

[Dog createInRealm:realm withObject:@{@"name": @"X", @"owners": @[personA, personB]}];
[Dog createInRealm:realm withObject:@{@"name": @"Y", @"owners": @[personA]}];
[Dog createInRealm:realm withObject:@{@"name": @"Z", @"owners": @[personA, personB]}];

[realm commitWriteTransaction];

现在,为了根据我们写的主人得到所有的狗

RLMArray *dogs = [Dog objectsWhere:@"ANY owners = %@", personA];

RLMArray *dogs = [Dog objectsWhere:@"ANY owners = %@", personB];

在这种情况下我们应该如何设置索引来提高性能?

我们如何反向链接以便我们可以做到

RLMArray *persons = [Person objectsWhere:@"ANY dogs = %@", dogX];

【问题讨论】:

    标签: database indexing realm


    【解决方案1】:

    目前还不支持。

    现在,您可以更改关系的方向,并在 Person 上拥有一个类型为 RLMArray<Dog> 的属性,如果您需要更频繁地朝那个方向遍历它。或者,您可以在两个方向上保持两个关系,您需要自己同步它们。

    我们跟踪通过问题 #1324 添加对此的支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-08
      • 1970-01-01
      相关资源
      最近更新 更多