首页 > 解决方案 > Mongoose:计算单个文档数组中的大量项目

问题描述

使用 MEAN 堆栈和 Mongoose (5.9),请考虑以下用户文档模型:

{
   "_id" : ObjectId,
   "Username" : "SamWhatever",
   "Followers" : [                 //may potentially grow to a huge number
      ForeignObjectId,
      ForeignObjectId,
      ForeignObjectId,
      ...
   ],
   "FollowersAmount": 20000001 //is it wise to substitute this by some native MongoDB functionality?
}

我正在跟踪数组中的追随者,以可能列出所有追随者(通过填充)。在用户的个人资料页面上,我想显示关注者的数量。当然,我不想传输整个追随者数组,而只是将普通数量的追随者发送到浏览器。我不确定我是否应该在每个用户文档中保留一个额外的 FollowersAmount 字段 - 当然 - 这也需要进一步的逻辑来始终保持值是最新的,或者我是否应该使用本机 Mongoose 功能(这也将始终足够快,无论该数组中未来的项目数量如何)以便在查询用户时即时计算关注者的数量,然后将结果附加到结果集中。类似(伪代码):

searchquery = User.findById({_id: id});

searchquery.populate({
    count: 'Followers'
});

任何最佳实践建议使用什么?同样,我只想计算一个文档的一个数组中的项目数,而不是跨多个文档。此外,我希望数组 Followers 增长到一个巨大的数字,并且更喜欢可扩展的解决方案。

标签: mongodbmongoose

解决方案


推荐阅读