使用MongoDB聚合通过ID获取对象

我有2个收藏集:

1。电影 2.演员

我正在使用聚合来查找演员如下的电影:

peliculactrl.peliculasactor = async(req,res) =>{

const peliculaactor = await actores.aggregate([

    {
      $lookup:
        {
          from: "peliculas",localField: "name",foreignField: "cast",as: "peliculas"
        }
   }
 ])

 res.json(peliculaactor);
}

这有效,但是如果演员没有电影也可以将其带入结果。

我需要做这样的事情,以便只为我带来对象ID的结果。

peliculactrl.peliculasactor = async(req,res) =>{

const peliculaactor = await actores.findById(req.params.id).aggregate([

    {
      $lookup:
        {
          from: "peliculas",as: "peliculas"
        }
   }
 ])

 res.json(peliculaactor);
}

但是我得到了

  

TypeError:actors.findById(...)。聚合不是函数

所有这些对于使用Angular中的activateRoute获得Mestro-Detail都是必需的。

希望您能帮到您

maobo_study 回答:使用MongoDB聚合通过ID获取对象

您可以使用聚合管道的$match运算符对集合进行过滤。 看起来像-

peliculaCtrl.peliculasActor = async(req,res) =>{

const peliculaActor = await Actores.aggregate([
    {
      $match: {
        _id: req.params.id,},{
      $lookup:
        {
          from: "peliculas",localField: "name",foreignField: "cast",as: "peliculas"
        }
   }
 ])

 res.json(peliculaActor);
}
本文链接:https://www.f2er.com/3084929.html

大家都在问