是否有可能在查询中获得重复项?

时间:2017-05-21 16:40:11

标签: google-cloud-datastore objectify

我正在构建具有后端的用户应用程序,我想知道一些事情

数据存储区查询使用索引来检索数据

如果用户在此索引中具有此索引的多个条目中的数据 查询会多次返回

说我有一个带有列表的用户实体这个列表是一个多个字符串表示位置的列表,例如用户在位置[A,AB,ABG,ABGJ,ABGJC]

如果我查询位置A或AB中的用户

查询将返回用户2次?

因为它将查找位置A中的所有用户,然后查找位置AB中的所有用户,同一用户位于两个位置A和AB

用户将返回2次?

2 个答案:

答案 0 :(得分:0)

您只能从查询中获取一次实体,即使它与查询中的多个参数匹配,如果您以不同方式运行查询,也只能获得同一实体的多个结果。

答案 1 :(得分:0)

数据存储区查询永远不会返回相同的实体两次。

在您的情况下,如果您使用用户和不同位置对集合建模,则必须对具有不同位置的同一用户执行多个条目,并对用户和位置编制索引。这将允许您查询它并将返回多个结果,因为有多个条目。但是,如果您添加一个位置数组作为用户的字段,并且每个用户只有一个条目,则即使对位置数组编制索引,也无法使用单个位置进行查询。

替代方案是在父级和子级中对其进行建模,并使用祖先查询。