【发布时间】:2020-08-05 19:47:28
【问题描述】:
我的数据库中有一组帖子,其中包含以下基本信息:
Posts = {
_id: '',
title '',
desc '',
...
}
我也有一个 赞 集合,例如(创建或删除用户喜欢帖子的文档):
Likes = {
_id: '',
user_id: '',
post_id: '',
}
目标是当我获得帖子列表时,添加一个字段喜欢,如果文档喜欢显示真/假strong> 是否匹配,以及 Like 集合中的匹配数(我知道如何):
Posts = [{
_id: '',
title '',
desc '',
liked: true,
likes: 5,
...
}, ...]
我使用过$lookup 和$addFields,但目前只能加入一个值。就我而言,我想要 一个 特定文档并按 2 个字段(user_id、post_id)过滤。
到目前为止我得到了什么:
const posts = await posts.aggregate
([
{
$lookup: {
from: 'likes',
localField: '_id',
foreignField: 'post_id',
as: 'likes'
}
},
{ $match: {
user_id: mongoose.Types.ObjectId(req.params.id),
} },
{
$addFields: {
likes:
{ $size: "$likes" } // here nb of likes
}
}
])
【问题讨论】:
标签: javascript mongodb mongoose