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

Fjern dubletter fra MongoDB 4.2-databasen

Dette er min inputsamling dups , med nogle duplikerede data (k med værdierne 11 og 22 ):

{ "_id" : 1, "k" : 11 }
{ "_id" : 2, "k" : 22 }
{ "_id" : 3, "k" : 11 }
{ "_id" : 4, "k" : 44 }
{ "_id" : 5, "k" : 55 }
{ "_id" : 6, "k" : 66 }
{ "_id" : 7, "k" : 22 }
{ "_id" : 8, "k" : 88 }
{ "_id" : 9, "k" : 11 }
 

Forespørgslen fjerner dubletterne :

db.dups.aggregate([
  { $group: { 
        _id: "$k",
        dups: { "$addToSet": "$_id" }, 
        count: { "$sum": 1 } 
  }}, 
  { $project: { k: "$_id", _id: { $arrayElemAt: [ "$dups", 0 ] } } }
] )
=>
{ "k" : 88, "_id" : 8 }
{ "k" : 22, "_id" : 7 }
{ "k" : 44, "_id" : 4 }
{ "k" : 55, "_id" : 5 }
{ "k" : 66, "_id" : 6 }
{ "k" : 11, "_id" : 9 }
 

Som du ser, er følgende duplikerede data fjernet :

{ "_id" : 1, "k" : 11 }
{ "_id" : 2, "k" : 22 }
{ "_id" : 3, "k" : 11 }
 


Få resultaterne i en matrix:

var arr = db.dups.aggregate([ ...] ).toArray()
 

arr har rækken af ​​dokumenter:

[ { "k" : 88, "_id" : 8 }, { "k" : 22, "_id" : 7 }, { "k" : 44, "_id" : 4 }, { "k" : 55, "_id" : 5 }, { "k" : 66, "_id" : 6 }, { "k" : 11, "_id" : 9 } ]


  1. Hvordan ClusterControl udfører automatisk databasegendannelse og failover

  2. Hvordan returnerer jeg en boolean i en mongodb-kategori

  3. MongoDB $min Aggregation Pipeline Operator

  4. mongodb num_rows tilsvarende php