sql >> Database >  >> NoSQL >> MongoDB

opzoeken met conditie in mangoest

U kunt $ gebruiken opzoeken met pijplijn vanaf MongoDB v3.6 ,

  • laat localField _id passeren als model_id variabele, kunt u het veld in de opzoekpijplijn gebruiken met $$ reference,
  • pijplijn om $match . te plaatsen stage en overeenkomen met uw vereiste voorwaarden en user_id staat
  {
    $lookup: {
      from: "bookmarks",
      let: { model_id: "$_id" },
      pipeline: [
        {
          $match: {
            $expr: { $eq: ["$$model_id", "$model_id"] },
            user_id: objectId(req.user._id)
          }
        }
      ],
      as: "bookmarks"
    }
  }

Andere optie voor MongoDB v3.4 ,

  • $filter om de lus van bookmarks te herhalen en ontvang gefilterde bladwijzers op basis van voorwaarde
  {
    $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. Aggregatie in kolf-mongoengine

  2. $strLenBytes versus $strLenCP in MongoDB:wat is het verschil?

  3. Moet ik een schaarse index gebruiken voor booleaanse vlaggen in mongodb?

  4. Logboekregistratie inschakelen voor Mongoose en het MongoDB Node.JS-stuurprogramma