【发布时间】:2011-01-25 15:25:52
【问题描述】:
稍微修改一下 GAE 的数据存储区,我发现我想不出一种正确的方法来过滤掉在多值属性上使用不等式过滤器 '!=' 的结果:
class Entry(db.Model):
...
tags = db.StringListProperty()
e1 = Entry()
e2 = Entry()
e1.tags = ['tag1', 'tag2', 'tag3']
e2.tags = ['tag1', 'tag3', 'tag4']
# I want to exclude all the results containing 'tag2'
db.GqlQuery("""SELECT * FROM Entry
WHERE tags != 'tag2' """)
问题是这个查询返回 e1 和 e2 但我只想要 e2。
我认为这是因为不等式过滤器的计算结果为 ANY(如果至少一个值为 != 'tag2',则为 TRUE。有一种方法可以将过滤器应用于 ALL?(如果所有值都是 != 'tag2 ')?
我知道 GAE 的数据存储不是关系型的,但我想知道如何巧妙地解决/思考此类查询。
谢谢 ;)
【问题讨论】:
标签: python google-cloud-datastore gql multivalue