领域:使用一对多关系查询和索引

时间:2015-12-17 13:04:29

标签: database indexing realm

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

姓名' A'有3只狗各自的名字 - ' X',' Y',' Z'

姓名' B'有2只狗,各自的名字 - ' X',' Z'

所以代码将是

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet id="my_awesome_id">
 <xsl:import href="default-master"/>
 <xsl:output method="xml" version="1.0" encoding="utf-8" omit-xml-declaration="yes" media-type="text/xml" indent="yes"/>
 <xsl:template name="content">
  blablabla
 </xsl:template>
 <xsl:template name="templatename">
  I really need help for this one :/
 </xsl:template>  
</xsl:stylesheet>

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

[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];

1 个答案:

答案 0 :(得分:0)

尚未支持。

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

我们会根据问题#1324跟踪对此的支持。