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

Vergleichen Sie zwei Objekt-Arrays und prüfen Sie, ob sie gemeinsame Elemente haben

3.6 Aktualisierung:

Verwenden Sie $match mit $expr . $expr ermöglicht die Verwendung von Aggregationsausdrücken innerhalb von $match Stufe.

db.collection.aggregate([
  {"$match":{
    "$expr":{
      "$eq":[
        {"$size":{"$setIntersection":["$FirstArray.Name","$SecondArray.Name"]}},
        0
      ]
    }
  }},
  {"$project":{"_id":1}}
])

Alte Version:

Sie können es mit $redact versuchen mit $setIntersection für Ihre Anfrage.

$setIntersection um das FirstArray zu vergleichen s Name s mit SecondArray s Name s und geben ein Array von Dokumenten mit gebräuchlichen Namen zurück, gefolgt von $size und $redact und Ergebnis mit 0 vergleichen um das Dokument zu behalten oder zu entfernen.

db.collection.aggregate(
  [{
    $redact: {
      $cond: {
        if: {
          $eq: [{
            $size: {
              $setIntersection: ["$FirstArray.Name", "$SecondArray.Name"]
            }
          }, 0]
        },
        then: "$$KEEP",
        else: "$$PRUNE"
      }
    }
  }, {
    $project: {
      _id: 1
    }
  }]
)