sql >> Databáze >  >> NoSQL >> MongoDB

Mongo najít duplikáty pro záznamy pro dvě nebo více polí

Duplikáty můžete snadno identifikovat spuštěním následující operace agregačního kanálu:

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

$group operátor v prvním kroku se používá k seskupení dokumentů podle foreign a value hodnoty klíče a poté vytvořte pole _id hodnoty pro každý ze seskupených dokumentů jako uniqueIds pomocí $addToSet operátor. Získáte tak řadu jedinečných hodnot výrazů pro každou skupinu. Získejte celkový počet seskupených dokumentů pro použití v pozdějších fázích kanálu pomocí $sum operátor.

Ve druhé fázi kanálu použijte $match operátor pro odfiltrování všech dokumentů s počtem 1. Odfiltrované dokumenty představují jedinečné indexové klíče.

Zbývající dokumenty budou ty v kolekci, které mají duplicitní hodnoty klíče pro pár foreing &value .



  1. Redis failover s StackExchange / Sentinel z C#

  2. Chyba:Připojení Redis k 127.0.0.1:6379 selhalo - připojte ECONNREFUSED 127.0.0.1:6379

  3. Jak používat šifrování k ochraně dat MongoDB

  4. získat objekt mongodb _id po upsert s php