我有一个类似的实体:
prop1 prop2 docid other-properties
str1 p1 1001 .........
str2 p1 1002 .........
str2 p2 1001 .........
str1 p2 1003 .........
我希望所有那些将“prop1 as str1和prop2 as p1”和“prop1 as str2 and prop2 as p2”共同使用并且想要使用其他属性的docid。就像这里的答案是docid 1001.任何人都可以建议我这样做吗?我甚至准备好在需要时更改我的数据库结构,但我希望这些事情只能由一个查询来完成......
关于我可能不需要使用它们的其他属性,这很好,我只想要所有常用的docid。
现在我正在使用这样的东西:
表示db.GqlQuery中的b(“SELECT * FROM b”):
for db.GqlQuery(“SELECT * FROM a WHERE y =:1”,b.y):
打印a.x
但是由于我有大量的参赛作品,这需要花费很多时间。
答案 0 :(得分:1)
对此进行建模的最简单方法是让文档本身有一个字符串列表:
class Doc(db.Model):
strings = db.StringListProperty()
然后,您可以像这样查询该列表中的多个字符串:
q = Doc.all().filter('strings =', 'str1').filter('strings =', 'str2').get()
默认情况下,这将使用合并连接策略,因此不需要您构建任何自定义索引。