Mongo没有max()函数,我该如何解决这个问题呢?

Nit*_*tin 6 mongodb

我有一个MongoDB集合,需要在所有文档中找到某个字段的max()值.此值是时间戳,我需要通过查找最大时间戳来查找最新的文档.对它进行排序并获得第一个效率非常快.我应该单独维护一个'maxval',并在每次doc到达该字段的值更大时更新它吗?有更好的建议吗?非常感谢.

dm.*_*dm. 19

如果你在timestsamp字段上有一个索引,找到最高值是有效的

db.things.find().sort({ts:-1}).limit(1)
Run Code Online (Sandbox Code Playgroud)

但如果索引太多,将max存储在单独的集合中可能会很好.


And*_*ich 3

确保它是否是大集合,并且如果您需要始终显示最大时间戳,您可能需要创建单独的集合并在那里存储统计数据,而不是每次都订购大集合。

statistic
{
  _id = 1, 
  id_from_time_stamp_collection = 'xxx',
  max_timestamp: value
}
Run Code Online (Sandbox Code Playgroud)

每当新文档出现时,只需更新 id = 1 的统计集合(查询中使用 $gt 条件,因此如果新时间戳大于 max_timestamp,则 max_timestamp 将被更新,否则 - 否)。

您也可能可以在统计集合中存储和更新其他统计数据。