稍微修改一下 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',则为 TRUE)?
我知道 GAE 的数据存储不是关系型的,但我想知道如何巧妙地解决/思考这种查询。
谢谢 ;)