对MongoDB索引的build议
我有以下的MongoDB架构项目
- ID
- 标题:string
- 描述:string
- num_views:数字
- num_likes:数字
- num_unlikes:数字
- val_trending:数字
- val_rating:数字
- 时间戳:编号
val_trending是根据num_views,num_likes,num_dislikes,时间戳
val_rating是根据num_likes,num_dislikes,timestamp的值来计算的
我必须根据num_views,val_trending或val_rating查询项目
即
- Item.find().sort({val_trending:-1})。limit(20)
- Item.find().sort({num_views:-1})。limit(20)
当用户查看时 , num_views,num_likes和num_unlikes被更新,因此与项目相似或不同
val_trending在用户视图时更新, 如同或不同于 Item
val_rating在用户喜欢或不同于 Item时更新
这是很多更新,这让我很担心。 我想索引num_views,val_trending和val_rating更快的结果。 但是这也会显示更新。
我将每秒钟多次查询项目,并且更新将更频繁地发生,因为在查看项目之后用户可能也喜欢或不同于项目。
所以,我的问题是:为了获得最佳性能,我应该做什么样的实现(索引)?
注意:数据库在启动时将保存大约10K个项目 ,并且每天都会增加。