MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Намерете дублиращи се URL адреси в mongodb

Приемане на документи за колекция с name (използвайки name вместо url ) поле, съдържащо дублиращи се стойности. Имам две агрегати, които връщат някакъв изход, който може да се използва за допълнителна обработка. Надявам се, че ще намерите това за полезно.

{ _id: 1, name: "jack" },
{ _id: 2, name: "john" },
{ _id: 3, name: "jim" },
{ _id: 4, name: "john" }
{ _id: 5, name: "john" }, 
{ _id: 6, name: "jim" }

Имайте предвид, че "john" има 3 събития, а "jim" има 2.

(1) Това обобщаване връща имената, които имат дубликати (повече от едно появяване):

db.collection.aggregate( [
  { 
      $group: { 
          _id: "$name", 
          count: { $sum: 1 }
      } 
  },
  { 
      $group: { 
          _id: "duplicate_names", 
          names: { $push: { $cond: [ { $gt: [ "$count", 1 ] }, "$_id", "$DUMMY" ] } }
      }
  }
] )

Резултатът:

{ "_id" : "duplicate_names", "names" : [ "john", "jim" ] }


(2) Следното агрегиране просто връща _id стойности на полета за дублираните документи. Например името "jim" има _id стойности 3 и 6 . Резултатът има само идентификаторите за дублираните документи, т.е. 6 .

db.colection.aggregate( [
  { 
      $group: { 
          _id: "$name", 
          count: { $sum: 1 }, 
          ids: { $push: "$_id" } 
      } 
  },
  { 
      $group: { 
          _id: "duplicate_ids",  
          ids: { $push: { $slice: [ "$ids", 1, 9999 ] } } 
      } 
  },
  { 
      $project: { 
          ids: { 
              $reduce: {
                  input: "$ids", 
                  initialValue: [ ],
                  in: { $concatArrays: [ "$$this", "$$value" ] }
              }
          }
      } 
  }
] )

Резултатът:

{ "_id" : duplicate_ids", "ids" : [ 6, 4, 5 ] }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Включете всички съществуващи полета и добавете нови полета към документа

  2. Mongoose - валидиране на синтаксиса на имейла

  3. Как да влезете в производството с MongoDB - Топ десет съвета

  4. Надстройване на по-стара база данни mongo след неволно надграждане на версията на mongo

  5. Как да извършите групова актуализация на документи в MongoDB с Java?