【发布时间】:2020-05-15 16:57:26
【问题描述】:
我正在通过 mongoose 使用 mongodb。我有许多看起来几乎相似的 mongodb 聚合查询,所以聚合代码有 90% 相似。我可以重用 mongodb 聚合代码以避免重复吗?或者如何将 mu 代码库设计为 DRY?
例如,考虑下面的代码:
CreatedPost.aggregate([
// $match can be dynamic
{$sort: { createdAt: -1 } },
{$lookup:{from:"users",localField:"creator",foreignField:"_id",as:"userWhoCreatedThisPost"}},
// Plus other lookups like likes comments etc
{$project:{
userWhoCreatedThisPost:{
_id:'$userWhoCreatedThisPost._id',
name:'$userWhoCreatedThisPost.name',
},
postText:'$postText',
createdAt : '$createdAt',
numberOfLikes:{$size:'$likes'},
numberOfComments:{$size:'$comments'},
// plus many more details
}}
])
在上面的查询中,您只需更改(或添加)$match 参数即可将代码重用于不同的目的。例如,如果您想要将帖子显示到时间轴上,或者您想要仅此用户创建的帖子,或者您只想要一个帖子。
mongodb聚合代码可以复用吗?如果是这样,你怎么做?或者有没有其他方法可以避免重复代码?
【问题讨论】:
标签: mongodb mongoose mongodb-query aggregation-framework