sql >> Databasteknik >  >> NoSQL >> MongoDB

uppslag med skick hos mangust

Du kan använda $ slå upp med pipeline med början från MongoDB v3.6 ,

  • låt för att skicka localField _id som model_id variabel, kan du använda fältet inuti lookup pipeline med $$ referens,
  • pipeline för att sätta $match steg och matcha dina villkor och user_id skick
  {
    $lookup: {
      from: "bookmarks",
      let: { model_id: "$_id" },
      pipeline: [
        {
          $match: {
            $expr: { $eq: ["$$model_id", "$model_id"] },
            user_id: objectId(req.user._id)
          }
        }
      ],
      as: "bookmarks"
    }
  }

Annat alternativ för MongoDB v3.4 ,

  • $filter för att upprepa loop av bookmarks och få filtrerade bokmärken på basen av tillstånd
  {
    $lookup: {
      from: "bookmarks",
      localField: "_id",
      foreignField: "model_id",
      as: "bookmarks"
    }
  },
  {
    $addFields: {
      bookmarks: {
        $filter: {
          input: "$bookmarks",
          cond: { $eq: ["$$this.user_id", objectId(req.user._id)] }
        }
      }
    }
  }


  1. MongoDB-installation i Ubuntu 14.04 misslyckades

  2. Utfasad body-parser?

  3. Att köra Meteor på localhost misslyckas med RangeError:porten ska vara>=0 och <65536:NaN

  4. Mongoose-uppdateringMånga med olika värden genom unikt ID som e-post utan loop