MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

pesquisa com condição no mangusto


Você pode usar $ pesquisa com pipeline a partir do MongoDB v3.6 ,
  • deixar passar localField _id como model_id variável, você pode usar o campo dentro do pipeline de pesquisa usando a referência $$,
  • pipeline para colocar $match stage e corresponda às suas condições exigidas e user_id condição
  {
    $lookup: {
      from: "bookmarks",
      let: { model_id: "$_id" },
      pipeline: [
        {
          $match: {
            $expr: { $eq: ["$$model_id", "$model_id"] },
            user_id: objectId(req.user._id)
          }
        }
      ],
      as: "bookmarks"
    }
  }

Outra opção para MongoDB v3.4 ,
  • $filter para iterar o loop de bookmarks e obtenha marcadores filtrados na base da condição
  {
    $lookup: {
      from: "bookmarks",
      localField: "_id",
      foreignField: "model_id",
      as: "bookmarks"
    }
  },
  {
    $addFields: {
      bookmarks: {
        $filter: {
          input: "$bookmarks",
          cond: { $eq: ["$$this.user_id", objectId(req.user._id)] }
        }
      }
    }
  }