代码之家  ›  专栏  ›  技术社区  ›  Cuga

如何构造GQL以不包含集合中的值?

  •  3
  • Cuga  · 技术社区  · 14 年前

    db.Model 对象不在给定列表中?如果是的话,语法是什么?

    class Spam(db.Model):
        field1 = db.BooleanProperty(default=false)
        field2 = db.IntegerProperty()
    

    我想处理但无法解决的查询示例:

    spam_results = db.GqlQuery(
    "SELECT * FROM Spam WHERE key NOT IN :1 LIMIT 10", 
    ['ag1waWNreXByZXNlbnRzchMLEgxBbm5vdW5jZW1lbnQYjAEM', 
     'ag1waWNreXByZXNlbnRzchMLEgxBbm5vdW5jZW1lbnQYjgEM'])
    
    for eggs in spam_results:
      print "id: %s" % a.key().id()
    
    1 回复  |  直到 14 年前
        1
  •  6
  •   David Underhill    14 年前

    不,尽管appengine支持“IN”查询,但它不支持“not IN”查询。

    不要 想要的是小,那你不妨就取回 实体并过滤掉那些你不需要自己的。

    或者,如果要排除的实体列表占所有实体的很大一部分,则上述解决方案将相当低效。相反,您可以向模型中添加一个附加属性,用于过滤不需要的实体(这是否可行取决于您的特定需求和数据)。

    推荐文章