查询最大数量的一对多关系
Query highest number of one-to-many relationships
我有一个 "Like" 系统来跟踪谁喜欢什么。
Like
模特的parent
是被点赞的对象。这可以是任何东西。对于此示例,让我们使用 Car
。 Like
模型还有一个 account
属性 来确定谁喜欢那个 Car
。
我想知道 datastore/NDB 中是否有查询最高点赞数的方法。这并没有标准化为 Car
对象上只有一个原始数字,但我想知道这是否是唯一真正的方法。
基本上,如果 10 个不同的人喜欢一个 Car
对象,而 5 个不同的人喜欢一个不同的 Car
对象,那么将这些对象列出来的查询是什么样的,与伯爵?
如果我知道要查询哪些 Car
个对象,我可以简单地查询 Like
table 上的对象,然后计算它拥有的对象数量,这显然给出了Car
的总 Like
计数,但我要朝另一个方向发展。
如前所述,这是不可能的:如果没有实际的计数器 属性,您首先需要执行单独的查询以获得每个相关计数,然后执行额外的步骤以确定这些计数的最大值.
但是,如果您将 liked
计数器 属性 添加到喜欢的对象(在您的示例中为 Car
),您将在创建相应的 Like
实体,您将不再需要第一轮查询来获取计数。因此,您将能够对每种喜欢的对象执行单个查询(在示例中查询 Car
实体)- 按 liked
属性 排序(desc),也许还有结果计数限制 - 这将为您提供同类中最喜欢的对象。
我有一个 "Like" 系统来跟踪谁喜欢什么。
Like
模特的parent
是被点赞的对象。这可以是任何东西。对于此示例,让我们使用 Car
。 Like
模型还有一个 account
属性 来确定谁喜欢那个 Car
。
我想知道 datastore/NDB 中是否有查询最高点赞数的方法。这并没有标准化为 Car
对象上只有一个原始数字,但我想知道这是否是唯一真正的方法。
基本上,如果 10 个不同的人喜欢一个 Car
对象,而 5 个不同的人喜欢一个不同的 Car
对象,那么将这些对象列出来的查询是什么样的,与伯爵?
如果我知道要查询哪些 Car
个对象,我可以简单地查询 Like
table 上的对象,然后计算它拥有的对象数量,这显然给出了Car
的总 Like
计数,但我要朝另一个方向发展。
如前所述,这是不可能的:如果没有实际的计数器 属性,您首先需要执行单独的查询以获得每个相关计数,然后执行额外的步骤以确定这些计数的最大值.
但是,如果您将 liked
计数器 属性 添加到喜欢的对象(在您的示例中为 Car
),您将在创建相应的 Like
实体,您将不再需要第一轮查询来获取计数。因此,您将能够对每种喜欢的对象执行单个查询(在示例中查询 Car
实体)- 按 liked
属性 排序(desc),也许还有结果计数限制 - 这将为您提供同类中最喜欢的对象。