복붙노트

[MONGODB] MongoDB의에서 중복 레코드 찾기

MONGODB

MongoDB의에서 중복 레코드 찾기

어떻게 몽고 컬렉션에서 중복 필드를 찾을 것입니다.

나는 "이름"필드의 중복이 있는지 확인하고 싶습니다.

{
    "name" : "ksqn291",
    "__v" : 0,
    "_id" : ObjectId("540f346c3e7fc1054ffa7086"),
    "channel" : "Sales"
}

많은 감사합니다!

해결법

  1. ==============================

    1.이름을 사용하여 집계 카운트> 1 이름을 가져올 수 :

    이름을 사용하여 집계 카운트> 1 이름을 가져올 수 :

    db.collection.aggregate(
        {"$group" : { "_id": "$name", "count": { "$sum": 1 } } },
        {"$match": {"_id" :{ "$ne" : null } , "count" : {"$gt": 1} } }, 
        {"$project": {"name" : "$_id", "_id" : 0} }
    )
    

    적어도 중복 가장하여 결과를 정렬하려면 :

    db.collection.aggregate(
        {"$group" : { "_id": "$name", "count": { "$sum": 1 } } },
        {"$match": {"_id" :{ "$ne" : null } , "count" : {"$gt": 1} } }, 
        {"$sort": {"count" : -1} },
        {"$project": {"name" : "$_id", "_id" : 0} }     
    )
    

    "$의 COLUMN_NAME"로 변경 "$ 이름" "이름"이 아닌 다른 열 이름을 사용하려면

  2. ==============================

    2.다음과 같은 집계 파이프 라인을 사용하여 중복 된 이름의 목록을 찾을 수 있습니다 :

    다음과 같은 집계 파이프 라인을 사용하여 중복 된 이름의 목록을 찾을 수 있습니다 :

    코드:

    db.collection.aggregate([
    {$group:{"_id":"$name","name":{$first:"$name"},"count":{$sum:1}}},
    {$match:{"count":{$gt:1}}},
    {$project:{"name":1,"_id":0}},
    {$group:{"_id":null,"duplicateNames":{$push:"$name"}}},
    {$project:{"_id":0,"duplicateNames":1}}
    ])
    

    O / P :

    { "duplicateNames" : [ "ksqn291", "ksqn29123213Test" ] }
    
  3. ==============================

    3.응답 anhic는 큰 데이터베이스를 가지고 속성 이름은 문서의 일부에있는 경우 매우 비효율적 일 수있다했다.

    응답 anhic는 큰 데이터베이스를 가지고 속성 이름은 문서의 일부에있는 경우 매우 비효율적 일 수있다했다.

    효율성을 개선하기 위해 당신은 집계에 $ 일치를 추가 할 수 있습니다.

    db.collection.aggregate(
        {"$match": {"name" :{ "$ne" : null } } }, 
        {"$group" : {"_id": "$name", "count": { "$sum": 1 } } },
        {"$match": {"count" : {"$gt": 1} } }, 
        {"$project": {"name" : "$_id", "_id" : 0} }
    )
    
  4. ==============================

    4.

    db.collectionName.aggregate([
    { $group:{
        _id:{Name:"$name"},
        uniqueId:{$addToSet:"$_id"},
        count:{"$sum":1}
      } 
    },
    { $match:{
      duplicate:{"$gt":1}
     }
    }
    ]);
    

    첫 번째 그룹 쿼리 필드에 따라 그룹.

    그런 다음 우리는 고유 ID를 확인하고 카운트가 큰 그 일이 $ 일치의 요청에 의한 핸들이 될 것입니다 수 있도록 필드가 전체 컬렉션에서 중복 된 후 다음 1 인 경우를 계산합니다.

  5. from https://stackoverflow.com/questions/26984799/find-duplicate-records-in-mongodb by cc-by-sa and MIT license