>  기사  >  백엔드 개발  >  Go를 사용하여 MongoDB의 여러 장소에서 특정 속성을 효율적으로 계산하는 방법은 무엇입니까?

Go를 사용하여 MongoDB의 여러 장소에서 특정 속성을 효율적으로 계산하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-25 21:57:03554검색

How to Efficiently Count Specific Attributes Across Multiple Venues in MongoDB using Go?

Go에서 MongoDB의 여러 속성 값을 확인하여 항목 목록 검색

문제:

장소 및 해당 속성의 중첩된 목록이 포함된 JSON 데이터 구조가 있는 경우 여러 장소에 대한 특정 속성(예: Linux 사용자) 수를 어떻게 검색합니까? 예를 들어, ID가 'VID1212' 및 'VID4343'인 장소의 Linux 사용자 수를 계산하려고 합니다.

해결책:

MongoDB에서 이를 달성하려면, 집계 프레임워크를 활용할 수 있습니다.

  1. $match: $in 연산자를 사용하여 지정된 장소 ID를 기반으로 문서를 필터링합니다.
  2. $unwind : 중첩된 VentureList 및 sum 배열을 평면화하여 데이터를 비정규화합니다.
  3. $match(두 번째 애플리케이션): 원하는 장소 ID만 고려하도록 해제된 문서를 다시 필터링합니다.
  4. $unwind(두 번째 응용 프로그램): 중첩 합계 하위 문서를 계속 해제합니다.
  5. $group:** **이름** 필드를 기준으로 문서를 그룹화합니다. 합계 하위 문서를 작성하고 누산기 **$sum.
  6. $cond:를 사용하여 **값** 필드를 집계합니다. 조건식을 사용하여 각각에 대해 별도의 개수 필드를 만듭니다. 원하는 속성(예: linux, ubuntu).

더 유연한 대안:

  1. 마지막 집계 단계를 다음으로 바꿉니다:

    { 
     "$group": {
         "_id": null,
         "counts": {
             "$push": {
                 "name": "$_id",
                 "count": "$count"
             }
         }
     }
    }

이 대체 그룹은 속성 이름을 기반으로 하고 해당 개수를 배열에 푸시합니다.

mGo(v2)를 사용하여 Golang에서 구현하려면 http:/에 대한 지침을 참조하세요. /godoc.org/labix.org/v2/mgo#Collection.Pipe.

위 내용은 Go를 사용하여 MongoDB의 여러 장소에서 특정 속성을 효율적으로 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.