MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verwendung der NOT IN-Array-Bedingung innerhalb des mongodb $lookup-Aggregats

Sie sollten $not verwenden $in mit $expr Ausdruck, Weil $nin ist ein Abfrageoperator, nicht für Aggregationsausdrücke,

  • Ein weiterer Fix, den Sie benötigen, um eine Variable mit let: { following: "$following"} zu erstellen und innerhalb der Pipeline $$following verwenden , da die Lookup-Pipeline keinen Zugriff auf Felder ohne Referenz zulässt,
  {
    $lookup: {
      from: "Users",
      let: {
        following: "$following"
      },
      pipeline: [
        {
          $match: {
            $expr: {
              $not: {
                $in: [
                  "$_id",
                  "$$following"
                ]
              }
            }
          }
        }
      ],
      as: "result"
    }
  }

Arbeitsspielplatz:https://mongoplayground.net/p/08OT6NnuYHx