Mongoose Aggregate获取所有匹配由一组符合其他条件的文档引用的条件的文档

时间:2017-02-13 02:16:32

标签: mongodb mongoose

我有一个像这样的猫鼬集合

[{
  _type:'video',
  _id:'video1',
  status:'active'
},
{
  _type:'video',
  _id:'video2',
  status:'active'
}]

还有这样的另一个系列

[{
  _type:'product',
  _id:'product1',
  items:['video1']
}]

如何使用mongoose聚合来查找_type为'视频'的所有文档?在字段中引用的项目'任何_type为'产品'

的文件

我想要的结果

[{
  _type:'video',
  _id:'video1',
  status:'active'
}]

这是我迄今为止所拥有的,但是已经连接了视频'永远是一个空数组

[{
    "$match":{
       "_type":"product"
    }
},

{
    "$project": {
        "items":true,
        "_id":true,
        "title":true
    }
},
{
    "$unwind":"$items"
},
{
    "$lookup": {
        "from": "videos",
        "localField": "items",
        "foreignField": "_id",
        "as": "connectedVideos"
    }
}
]

1 个答案:

答案 0 :(得分:0)

事实证明,上面发布的$ lookup应该可以工作,但是并不是因为我的localField是一个字符串,我的foreignField是一个ObjectId所以我发布了一个更精致的问题,详细说明了问题在这里

$lookup localField as string but foreignField as ObjectId