sql >> Database teknologi >  >> NoSQL >> MongoDB

Sammenlign to objektarrays og kontroller, om de har fælles elementer

3.6 Opdatering:

Brug $match med $expr . $expr tillader brug af aggregeringsudtryk inde i $match scene.

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

Gammel version:

Du kan prøve $redact med $setIntersection for din forespørgsel.

$setIntersection for at sammenligne FirstArray s Name s med SecondArray s Name s og returner en række almindelige navnedokumenter efterfulgt af $size og $redact og sammenlign resultatet med 0 for at beholde og ellers fjerne dokumentet.

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



  1. Redis scan-kommando match-indstilling virker ikke i Python

  2. Tvinger anvendelse af et 2dsphere-indeks på et mongoose-skema placeringsfeltet til at være påkrævet?

  3. Hvordan kan jeg implementere tilladelser på feltniveau til MongoDB?

  4. hvordan man opretter indekset fra mongoose i elastisk søgning i node,expressjs