【问题标题】:AppEngie Datastore Join - Getting Child Entity Property thru a Query on the Parent EntityAppEngie 数据存储区加入 - 通过父实体上的查询获取子实体属性
【发布时间】:2013-06-02 16:33:44
【问题描述】:

我的父母有多个子实体。我有兴趣对父实体进行查询,并将结果与​​匹配的子实体的一个或多个属性连接起来。在 SQL 中,您会执行以下操作:

select p.name, p.phone, c.age from Parent p, Child c 
where p.name = 'some name' and c.name = 'John'

这是否可能通过 AppEngine Datatstore 中基于祖先路径的查询。

感谢并为一个普通的问题感到抱歉(我已经浏览了 Datastore 文档 - 但不清楚这是否可能)。

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

    您不能在 App Engine 数据存储区中执行 JOIN。这是明确声明的in the documentation

    尤其不支持以下内容:[...]

    • 加入运营

    【讨论】:

    • 谢谢丹尼尔。我已经发布了解决此限制的方法。也许它可以帮助其他尝试做类似事情的人..
    【解决方案2】:

    我在 Google Appengine 的 Datatore API 中使用了另一种方法,它提供了一种相当优雅的机制来实现这样的事情(或者这对用户来说可能是显而易见的——所以请原谅我的热情......)。我仍然无法通过单个查询获取此内容,需要再次获取 - 但它似乎是最有效的(性能和代码质量方面):

    class Person (db.Model):
      name = db.StringProperty()
      age = Db.IntegerProperty()
    
    class Child (db.Model):
      name = db.StringProperty()
      parent = db.RerenceProperty(collection_name="children")
    
    p = new Person (name="Tom", age=21).put()
    c = new Child (name="John", parent=p.key()).put() # sets a reference in child to parent
    
    You can now do 
    
    matchingChild = p.children.filter("name=", "John").fetch(1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 2013-10-27
      • 2017-09-27
      • 2019-08-15
      • 1970-01-01
      相关资源
      最近更新 更多