MongoDB 컬렉션에서 중복 문서 찾기
15840 단어 javascriptmongodbnodewebdev
MongoDB 컬렉션에서 중복 문서를 찾고 계십니까? 이 기사는 특정 필드별로 MongoDB 컬렉션에서 중복 레코드를 찾는 데 도움이 될 것입니다.
MongoDB is a JSON based document-oriented database that can handle big size of data without compromising the performance.
MongoDB 컬렉션에서 중복 문서 찾기
컬렉션에서 모든 중복 문서를 제거하고 싶지만 찾는 방법을 모르는 경우가 있습니다. 여기에서는 MongoDB에서 중복 레코드를 찾는 방법을 살펴보겠습니다. 중복을 찾으면 Mongo 컬렉션에서 쉽게 제거할 수 있습니다.
이 예에서는 Github Public IssuesAPI를 사용하고 있습니다. Github API에서 문제를 가져와 중복을 만들기 위해 동일한 요청을 여러 번 수행하여 데이터베이스에 삽입했습니다.
aggregate
및 $group
파이프라인 연산자와 함께 $match
메서드를 사용하여 중복을 찾습니다. 중복을 가져오는 코드를 단계별로 구현해 보겠습니다.필드별 MongoDB 그룹 레코드
중복 검색을 구현하기 위한 첫 번째 단계는 레코드 그룹화입니다.
db.issues.aggregate([
{$group: {
_id: {IssueNumber: "$issue_number"}
}
}
]);
위의 코드는
issues
필드로 그룹화된 issue_number
컬렉션에 있는 모든 문서를 가져옵니다./* 1 */
{
"_id" : {
"IssueNumber" : 2778
}
}
/* 2 */
{
"_id" : {
"IssueNumber" : 80
}
}
/* 3 */
{
"_id" : {
"IssueNumber" : 2592
}
}
/* 4 */
{
"_id" : {
"IssueNumber" : 2596
}
}
/* 5 */
{
"_id" : {
"IssueNumber" : 2599
}
}
/* 6 */
{
"_id" : {
"IssueNumber" : 98
}
}
/* 7 */
{
"_id" : {
"IssueNumber" : 2602
}
}
/* 8 */
{
"_id" : {
"IssueNumber" : 99
}
}
/* 9 */
{
"_id" : {
"IssueNumber" : 2607
}
}
/* 10 */
{
"_id" : {
"IssueNumber" : 100
}
}
MongoDB 중복 문서 가져오기
이제 전체 쿼리를 구현하고 MongoDB 컬렉션에서 개수가 1개 이상인 모든 행을 가져올 때입니다.
db.issues.aggregate([
{$group: {
_id: {IssueNumber: "$issue_number"},
uniqueIds: {$addToSet: "$_id"},
count: {$sum: 1}
}
},
{$match: {
count: {"$gt": 1}
}
}
]);
$addToSet
연산자는 값이 아직 없는 경우 배열에 값을 추가합니다. 값이 이미 있으면 아무 작업도 수행하지 않습니다.$sum
숫자 값의 합계를 계산하여 반환합니다.$match
결과 집합에 조건을 적용합니다. $gt
는 count
가 제공된 숫자(즉, 1)보다 큰지 확인합니다.위의 쿼리는 다음과 같은 출력을 생성합니다.
/* 1 */
{
"_id" : {
"IssueNumber" : 34
},
"uniqueIds" : [
ObjectId("61b993c2f8fba0f17accd7fc"),
ObjectId("61b9937b12b680e75f5a7fac"),
ObjectId("61b88043dcb3fc4c9c03ca8e")
],
"count" : 3.0
}
/* 2 */
{
"_id" : {
"IssueNumber" : 37
},
"uniqueIds" : [
ObjectId("61b993c1f8fba0f17accd7f6"),
ObjectId("61b9937b12b680e75f5a7f97"),
ObjectId("61b88042dcb3fc4c9c03ca82")
],
"count" : 3.0
}
/* 3 */
{
"_id" : {
"IssueNumber" : 677
},
"uniqueIds" : [
ObjectId("61b993baf8fba0f17accd6bd"),
ObjectId("61b88042dcb3fc4c9c03ca76")
],
"count" : 2.0
}
/* 4 */
{
"_id" : {
"IssueNumber" : 695
},
"uniqueIds" : [
ObjectId("61b993b9f8fba0f17accd667"),
ObjectId("61b88040dcb3fc4c9c03ca4a")
],
"count" : 2.0
}
/* 5 */
{
"_id" : {
"IssueNumber" : 700
},
"uniqueIds" : [
ObjectId("61b993b8f8fba0f17accd653"),
ObjectId("61b88040dcb3fc4c9c03ca42")
],
"count" : 2.0
}
/* 6 */
{
"_id" : {
"IssueNumber" : 1871
},
"uniqueIds" : [
ObjectId("61b993b8f8fba0f17accd60c"),
ObjectId("61b8803fdcb3fc4c9c03ca25")
],
"count" : 2.0
}
이제 MongoDB 컬렉션에 있는 모든 중복 레코드의 ObjectId가 있습니다. 별도의 쿼리를 실행하여 제거할 수 있습니다.
Looking to insert and update records in MongoDB together? This will help you upsert documents in a single query.
Repair Windows에서 충돌 후 MongoDB 인스턴스.
결론
이 문서에서는 특정 필드별로 MongoDB 컬렉션에서 중복 문서를 찾는 방법을 자세히 설명합니다.
TLDR;
이 기사에서 가치를 찾으시기 바랍니다. 기사가 마음에 든다면 다른 개발자에게 널리 퍼뜨리십시오. 다음 글에서 만나요 🙂
Reference
이 문제에 관하여(MongoDB 컬렉션에서 중복 문서 찾기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/stackblogger/finding-duplicate-documents-in-mongodb-collection-l53텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)