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

Mongo finder dubletter til poster for to eller flere felter

Du kan nemt identificere dubletterne ved at køre følgende aggregeringspipelineoperation:

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

$group operatør i det første trin bruges til at gruppere dokumenterne efter foreign og value nøgleværdier, og opret derefter en matrix af _id værdier for hvert af de grupperede dokumenter som uniqueIds feltet ved hjælp af $addToSet operatør. Dette giver dig en række unikke udtryksværdier for hver gruppe. Få det samlede antal grupperede dokumenter til brug i de senere pipeline-faser med $sum operatør.

Brug $match i den anden pipeline-fase operatør for at bortfiltrere alle dokumenter med et antal på 1. De bortfiltrerede dokumenter repræsenterer unikke indeksnøgler.

De resterende dokumenter vil være dem i samlingen, der har dublerede nøgleværdier for par foreing &value .



  1. Forespørgsel efter dokumenter, hvor matrixstørrelsen er større end 1

  2. Implementering af paginering i mongodb

  3. Delvis opdatering af et underdokument med nodejs/mongoose

  4. Bedste praksis for sikkerhedskopiering af databaser