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

问题描述 投票:0回答:1

我有一个“喜欢”系统来跟踪谁喜欢什么。

Like模型的parent是喜欢的对象。这可以是任何东西。对于此示例,请使用CarLike模型还具有account属性,该属性确定谁喜欢该Car

我想知道在数据存储区/ NDB中是否可以查询最多的点赞次数。这并没有被标准化为仅在Car对象上具有原始数字,但是我想知道这是否是唯一的真正方法。

[基本上,如果有10个不同的人喜欢一个Car对象,而5个不同的人喜欢一个不同的Car对象,那么将带有计数的那些列出来的项目看起来像什么查询?

[如果我知道要查询的Car个对象,我可以简单地在Like表中查询那些对象并只计算它具有的对象数,这显然为我提供了该Like的总数Car ],但我正朝另一个方向发展。

google-app-engine google-cloud-datastore app-engine-ndb
1个回答
1
投票

如上所述,这是不可能的:没有实际的计数器属性,您首先需要执行单个查询以获取每个相关计数,然后执行附加步骤来确定这些计数的最大值。

但是,如果在喜欢的对象中添加liked计数器属性(在示例中为Car),而您在创建相应的Like实体的同一交易中增加了该属性,则不再需要第一轮查询以获取计数。因此,您将能够对每种喜欢的对象(在示例中对Car实体的查询)执行一次查询-由liked属性排序(降序),并且可能具有结果计数限制-这将为您提供最喜欢的那种对象。

© www.soinside.com 2019 - 2024. All rights reserved.