使用$ lookup外加入mongodb

时间:2018-08-31 18:31:37

标签: javascript node.js mongodb mongoose aggregation-framework

我有一个频道收藏集

{
  channel: "Xamper",  //unique
  subscribers: [
    ObjectId("5a934e000102030405000000"),
    ObjectId("5a934e000102030405000001"),
    ObjectId("5a934e000102030405000002")
  ]
}

和一个用户集合

{
  _id: ObjectId("5a934e000102030405000000"),
  name: "Bradman"
},
{
  _id: ObjectId("5a934e000102030405000001"),
  name: "Hartin"
},
{
  _id: ObjectId("5a934e000102030405000002"),
  name: "Migra"
},
{
  _id: ObjectId("5a934e000102030405000004"),
  name: "Polycor"
}

现在,我需要使用 Channel 名称"Xamper"查找并计算不在{​​{1}}数组中的用户

所以输出将是

subscribers

与SQL的外部排除连接类似

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以在3.6中使用以下管道。

$lookup具有管道,可将Channels集合加入订阅者上的Users集合

$count$not $in进行比较,以将订户与Users集合中的每个ID进行比较,并输出不匹配的文档。

$project以投影输出字段。

'\Tag:+(.*)Tag:\