【问题标题】:MongoTemplate method or query for finding maximum values from a fileds用于从字段中查找最大值的 MongoTemplate 方法或查询
【发布时间】:2013-05-23 13:03:02
【问题描述】:

我正在使用 MongoTemplate 进行数据库操作。现在我想从所选结果中获取最大字段值。有人可以指导我如何编写查询,以便当我将查询传递给 find 方法时,它将返回我所需的最大文档字段。提前致谢 问候

【问题讨论】:

  • “最大字段值” .. 是什么意思?粘贴一些代码,以便更清楚您需要什么。
  • 这里是完整的代码... public T findMaximumFields(Class c, String field) { T maxFieldDocs = null;查询查询 = 新查询(); query.with(new Sort(Sort.Direction.DESC, field)).limit(1); maxFieldDocs = (T) mongoTemplate.findOne(query, c);返回 maxFieldDocs; } public T findMinimumFields(Class c, String field) { T minFieldDocs = null;查询查询 = 新查询(); query.with(new Sort(Sort.Direction.ASC, field)).limit(1); minFieldDocs = (T) mongoTemplate.findOne(query, c);返回 minFieldDocs; }

标签: spring mongodb


【解决方案1】:

您可以在spring-data-mongodb中找到“具有最大字段值的对象”。如果排序字段被索引(或@Id 字段),Mongo 将优化排序/限制组合。否则它仍然很好,因为它将使用 top-k 算法并避免全局排序(mongodb sort doc)。这是来自Mkyong's example,但我先进行排序并将限制设置为一秒。

Query query = new Query();
query.with(new Sort(Sort.Direction.DESC, "idField"));
query.limit(1);
MyObject maxObject = mongoTemplate.findOne(query, MyObject.class);

【讨论】:

  • 有些版本可以是:query.with(Sort.by(Sort.Direction.DESC, "idField"));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2015-09-01
相关资源
最近更新 更多