首页 > 解决方案 > 在 MongoDB 中存储最近使用的项目的设计方法

问题描述

我有多个解决方案的设计问题,我想看看是否有人可以就量化权衡哪种方法更好提供见解。

问题:我在 MongoDB 中有一个项目列表,介于 10 到 100,000 之间(合理)。我希望能够按从最近使用到最近最少使用的顺序展示我最近使用的前 100 项物品。

解决方案 1:我为每个 MongoDB 项目添加一个时间戳。当我使用该项目时,我会更新该项目的时间戳。为了生成我最近使用的前 100 个项目,我查询 MongoDB,按上次使用的时间戳对项目进行排序,然后呈现前 100 个排序的项目。我的想法是,此解决方案对当前实现的更改最少,但如果它查询和排序例如 100,000 个项目(特别是如果多个用户正在执行此查询),则可能会很慢。

解决方案 2:我创建了一个新的 MongoDB 集合,仅将前 100 个项目存储在一个数组中。每次使用一个项目时,我都会在数组中添加一个元素,如果数组大于 100 个项目,我会弹出最后一个项目。我的想法是,这个解决方案似乎更快,因为查询只返回最近集合中的所有内容。

在性能方面(对于用户),哪种方法更好?还是有更好的替代方法?

标签: mongodb

解决方案


推荐阅读