MongoDB汇总$ lookup以返回主集合中不匹配的项目

时间:2019-04-26 08:47:49

标签: mongodb aggregation-framework

我想要来自USERS集合的不匹配数据。在这里,我有两个集合1) USERS2) COMPANY。我能够使用聚合函数从两个USERS获取匹配的数据。但是在这种情况下,我希望从USERS表中获取未分配给公司的数据。

USERS表

{
 _id: "AAA",
 fullName:"John Papa"
},
{
_id: "BBB",
fullName:"Robin Son"
}

COMPANY表

{
 _id: "1sd1s",
 Name:"Lumbar Company"
 User:"AAA"
},
{
 _id: "23s1dfs3",
 Name:"Patricia"
 User:"AAA"
}

1 个答案:

答案 0 :(得分:1)

$lookup的作用类似于LEFT OUTER JOIN,因此在不匹配时将删除空数组。然后,您可以使用$size仅获取空数组:

db.users.aggregate([
    {
        $lookup: {
            from: "company",
            localField: "_id",
            foreignField: "User",
            as: "companies"
        }
    },
    {
        $match: {
            $expr: {
                $eq: [ { "$size": "$companies" }, 0 ]
            }
        }
    }
])

Mongo Playground