我有一个MongoDB集合,需要在所有文档中找到某个字段的max()值.此值是时间戳,我需要通过查找最大时间戳来查找最新的文档.对它进行排序并获得第一个效率非常快.我应该单独维护一个'maxval',并在每次doc到达该字段的值更大时更新它吗?有更好的建议吗?非常感谢.
dm.*_*dm. 19
如果你在timestsamp字段上有一个索引,找到最高值是有效的
db.things.find().sort({ts:-1}).limit(1)
Run Code Online (Sandbox Code Playgroud)
但如果索引太多,将max存储在单独的集合中可能会很好.
确保它是否是大集合,并且如果您需要始终显示最大时间戳,您可能需要创建单独的集合并在那里存储统计数据,而不是每次都订购大集合。
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 将被更新,否则 - 否)。
您也可能可以在统计集合中存储和更新其他统计数据。
| 归档时间: |
|
| 查看次数: |
7500 次 |
| 最近记录: |