假设我在AppEngine DataStore中存储了几个实体,它们都具有索引的数字属性,我需要找到当前存在的最大值。
我可以简单地使用降序排序和限制为1对此属性进行排序的投影查询。返回的结果将包含我的答案。
这是最好的方法还是有更有效的方法来获得这个价值?
(在这种情况下,一致性并不是太担心。如果我错过了同时提交的几个值,我不会太在意。所以,这里不需要交易。)
答案 0 :(得分:2)
由于GAE数据存储在SQL数据库上没有等效的MAX
,因此最好按列排序并检索第一个条目。例如:
max_val = MyEntity.query().order(-MyEntity.my_numeric_field).get().my_numeric_field
您的第二个选择是将最大值存储在某个其他实体中,然后在添加其中一个实体时更新它(可能在事务中)。