假设我有一个用户集合,其中单个文档具有类似的字段
{
"_id" : "4775222e-8e4f-4f84-8dba-b097291bbd39",
"surname" : "Smith",
"forename" : "John"
}
比方说,我有一个作业集合,其中一个文档有一些常规字段,但也有用户id的db-ref,就像一样
{
"_id" : "f4bdda3e-0e8d-4e8d-b070-7d01421f5a51",
"description" : "do something",
"manager" : {
"$ref" : "users",
"$id" : "4775222e-8e4f-4f84-8dba-b097291bbd39"
}
}
是否可以检索用户列表,也可以在单个查询中为每个用户检索属于他的作业数,因此最终输出将是一个实体列表,其中单个实体看起来像
{
"_id" : "4775222e-8e4f-4f84-8dba-b097291bbd39",
"surname" : "Smith",
"forename" : "John",
"jobsCount":3
}
您可以使用一个简单的$lookup阶段:
db.users.aggregate([
{
"$lookup": {
"from": "jobs",
"localField": "_id",
"foreignField": "manager.$id",
"as": "jobsCount"
}
},
{
"$addFields": {
"jobsCount": {
$size: "$jobsCount"
}
}
}
])
Mongo游乐场