标题说明了一切.如果一个文档没有根据其匹配字段生成任何匹配的外部文档,那么为什么它不包括在管道的结果集中?
我正在测试Mongo 3.2中的新聚合器,我甚至通过首先展开,然后分组备份文档来执行嵌套数组查找.我所剩下的就是让结果包括所有不符合$lookup
个标准的本地文档,这就是我所认为的"左外连接"的标准定义.
问题是:
db.users.aggregate([
{
$unwind: "$profile",
$unwind: "$profile.universities"
},
{
$lookup: {
from: "universities",
localField: "profile.universities._id",
foreignField: "_id",
as: "profile.universities"
}
},
{
$group: {
_id: "$_id",
universities: {
$addToSet: "$profile.universities"
}
}
}
]).pretty()
因此,如果我有一个user
,它有一个空的profile.universities
数组,那么我需要将它包括在结果集中,而不管$lookup
返回任何匹配项,但它没有.我怎么能做到这一点,以及Mongo建造$lookup
以这种方式运行的任何原因?