查询最大数量的一对多关系

Query highest number of one-to-many relationships

我有一个 "Like" 系统来跟踪谁喜欢什么。

Like模特的parent是被点赞的对象。这可以是任何东西。对于此示例,让我们使用 CarLike 模型还有一个 account 属性 来确定谁喜欢那个 Car

我想知道 datastore/NDB 中是否有查询最高点赞数的方法。这并没有标准化为 Car 对象上只有一个原始数字,但我想知道这是否是唯一真正的方法。

基本上,如果 10 个不同的人喜欢一个 Car 对象,而 5 个不同的人喜欢一个不同的 Car 对象,那么将这些对象列出来的查询是什么样的,与伯爵?

如果我知道要查询哪些 Car 个对象,我可以简单地查询 Like table 上的对象,然后计算它拥有的对象数量,这显然给出了Car 的总 Like 计数,但我要朝另一个方向发展。

如前所述,这是不可能的:如果没有实际的计数器 属性,您首先需要执行单独的查询以获得每个相关计数,然后执行额外的步骤以确定这些计数的最大值.

但是,如果您将 liked 计数器 属性 添加到喜欢的对象(在您的示例中为 Car),您将在创建相应的 Like 实体,您将不再需要第一轮查询来获取计数。因此,您将能够对每种喜欢的对象执行单个查询(在示例中查询 Car 实体)- 按 liked 属性 排序(desc),也许还有结果计数限制 - 这将为您提供同类中最喜欢的对象。