Рассматривая простейший сценарий, где у вас есть две коллекции, как показано ниже:
db.col1.save({ _id: 1 })
db.col2.save({ col1_id: 1 })
db.col2.save({ col1_id: 1 })
db.col2.save({ col1_id: 1 })
, вы можете использовать $ lookup , чтобы получить данные из col2
в col1
, указав, какие поляопределите «отношение», и тогда вы можете использовать $ size , чтобы получить количество элементов, попробуйте:
db.col1.aggregate([
{
$lookup: {
from: "col2",
localField: "_id",
foreignField: "col1_id",
as: "col2docs"
}
},
{
$project: {
col2size: { $size: "$col2docs" }
}
}
])
output:
{ "_id" : 1, "col2size" : 3 }