多个过滤器与OR,ndb查询

时间:2014-10-18 09:52:31

标签: google-app-engine app-engine-ndb google-cloud-datastore

这些查询之间有什么区别:

  1. 使用后续过滤器:

    qry1 = Account.query() # Retrieve all Account entitites
    qry2 = qry1.filter(Account.userid >= 40) # Filter on userid >= 40
    qry3 = qry2.filter(Account.userid < 50) # Filter on userid < 50 as well
    
  2. 使用ndb.OR:

    qry = Article.query(ndb.OR(Account.userid >= 40,
                           Account.userid < 50))
    
  3. 使用ndb.AND:

    qry = Article.query(ndb.AND(Account.userid >= 40,
                            Account.userid < 50))
    

2 个答案:

答案 0 :(得分:2)

第三个和第一个查询完全相同。但第二个查询是荒谬的,它最终可能会返回 Kind 中的所有实体

答案 1 :(得分:1)

第一个查询执行AND。因此,查询只返回匹配两个不等式的实体。第二个查询执行OR。因此,将返回与任一过滤器匹配的实体。有关ndb查询的更多信息,请查看NDB Queries