您好我是Datastore和Python上的新手,我有一个基本问题,但它可以帮助我更多地了解Google云。
我有4个实体,让我们说我有一个孩子的父母(匹配):团队,球员和事件。
class Team(ndb.Model):
d_name = ndb.StringProperty()
d_side = ndb.StringProperty()
class Player(ndb.Model):
d_name = ndb.StringProperty()
date_of_birth = ndb.StringProperty()
d_position = ndb.StringProperty()
d_teamKey = ndb.StringProperty()
class Match(ndb.Model):
d_competition_name = ndb.StringProperty()
d_date = ndb.StringProperty()
d_pool = ndb.StringProperty()
d_season = ndb.StringProperty()
d_team1Key = ndb.StringProperty()
d_team2Key = ndb.StringProperty()
d_winning_teamKey = ndb.StringProperty()
d_match_id = ndb.StringProperty()
d_match_day = ndb.IntegerProperty()
class Event(ndb.Expando):
d_teamKey = ndb.StringProperty()
d_playerKey = ndb.StringProperty()
我知道如果我想要所有比赛第4天的查询是:
q = ndb.gql("SELECT * FROM Match WHERE d_match_day = 4")
但是我如何能够在这些比赛的孩子中找到所有球员,以便我拥有在第4天比赛中所有球员?
谢谢!
答案 0 :(得分:1)
将另一个属性添加到Match
:StructuredProperty
,这是一个玩家(和/或小组)列表:
Players = ndb.StructuredProperty(Player)
Teams = ndb.StructuredProperty(Team)
然后,您可以查询4
并提取玩家和/或小组列表。
答案 1 :(得分:0)
无论如何,在一个单一的查询中,我不认为这是可行的。我会从d_match_day = 4的匹配开始获取密钥,然后从那里做一个" select * from Players,match_key ="并使用您刚刚创建的列表。 (你可能需要更改match_key以匹配你的实际祖先密钥,但它的主旨就在那里)