我有一个具有以下模型关系的MongoDB数据库。 “活动”有许多“订阅”。 “订阅”有许多“发票”。 每个订阅都属于一个活动。每张发票都属于一个订阅
给出一个活动,我想找出与该“活动”相关的所有发票中的COUNT个
如何在MongoDB中编写这样的查询? (我想避免在每张发票中添加活动参考)
答案 0 :(得分:0)
如果我正确理解您,您有3个集合:“活动”,具有“活动”链接的“订阅”和“具有订阅”链接的发票。如果是这样,您的代码应该像这样
db.invoices.aggregate([
{
$lookup: {
from: 'subscriptions',
localField: 'subscriptionId',
foreignField: '_id',
as: 'subscription'
}
},
{
$lookup: {
from: 'activities',
localField: 'subscription.activityId',
foreignField: '_id',
as: 'activity'
}
},
{
$match: {
'activity._id': 'your activity _id'
}
},
{
$count: 'invoice_count'
}
])