0

我有多个子实体的父母。我有兴趣对父实体进行查询,并将结果与​​匹配的子实体的一个或多个属性连接起来。在 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 文档 - 但不清楚这是否可能)。

4

2 回答 2

2

您不能在 App Engine 数据存储区中执行 JOIN。这在文档中明确说明:

特别是,不支持以下内容:[...]

  • 加入操作
于 2013-06-02T17:54:59.113 回答
0

我在 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)
于 2013-06-02T19:25:43.150 回答