sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongo hittar dubbletter för poster för två eller flera fält

Du kan enkelt identifiera dubbletterna genom att köra följande aggregationspipelineoperation:

db.collection.aggregate([
    { 
        "$group": { 
            "_id": { "foreing": "$foreing", "value": "$value" }, 
            "uniqueIds": { "$addToSet": "$_id" },
            "count": { "$sum": 1 } 
        }
    }, 
    { "$match": { "count": { "$gt": 1 } } }
])

$group operatorn i det första steget används för att gruppera dokumenten efter foreign och value nyckelvärden och skapa sedan en array med _id värden för vart och ett av de grupperade dokumenten som uniqueIds fältet med $addToSet operatör. Detta ger dig en rad unika uttrycksvärden för varje grupp. Få det totala antalet grupperade dokument att använda i de senare stegen i pipeline med $sum operatör.

I det andra pipelinesteget använder du $match operatör för att filtrera bort alla dokument med ett antal 1. De bortfiltrerade dokumenten representerar unika indexnycklar.

De återstående dokumenten kommer att vara de i samlingen som har dubbla nyckelvärden för par foreing &value .



  1. Hur startar man ett mongodb-skal i dockercontainer?

  2. Hur skapar man ett distribuerat lås med Redis?

  3. Hur validerar jag medlemmar i ett matrisfält?

  4. Hur man installerar Apache CouchDB på CentOS 8