>백엔드 개발 >Golang >Go를 사용하여 MongoDB의 여러 장소에서 사용자 에이전트 발생을 효율적으로 계산하는 방법은 무엇입니까?

Go를 사용하여 MongoDB의 여러 장소에서 사용자 에이전트 발생을 효율적으로 계산하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-26 11:00:02211검색

How to Efficiently Count User Agent Occurrences Across Multiple Venues in MongoDB Using Go?

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

목표는 여러 항목을 일치시켜 MongoDB에서 항목 목록을 검색하는 것입니다. SQL의 IN 조건과 유사한 속성 값. 이 경우 목표는 장소 목록 배열이 포함된 JSON 문서에서 "linux" 및 "ubuntu" 사용자 에이전트의 발생 횟수를 계산하는 것입니다. 각 장소 목록에는 사용자 에이전트 이름과 값을 포함하는 일련의 합계 하위 문서가 있습니다.

해결책에는 MongoDB의 집계 프레임워크와 Go의 mgo 패키지를 사용하는 것이 포함됩니다. 집계 파이프라인의 세부 내용은 다음과 같습니다.

  1. 장소 ID로 필터링: $match 파이프라인을 사용하여 VenueList.id 필드가 원하는 장소 ID와 일치하는 문서를 선택합니다(예: "VID1212" 및 "VID4343").
  2. Unwind Venue List: $unwind 파이프라인을 사용하여 VenueList 배열을 비정규화하고 각 장소에 대해 별도의 문서를 생성합니다.
  3. 장소 ID 필터링: 해제한 후 문서를 다시 필터링하여 원하는 장소 ID만 남도록 합니다.
  4. Sum 하위 문서 해제: 합계 하위 문서 배열을 해제하여 사용자 에이전트 이름 및 값.
  5. 그룹 및 합계: $group 파이프라인을 사용하여 사용자 에이전트 이름별로 문서를 그룹화하고 $sum 연산자를 사용하여 해당 값을 합산합니다.
  6. 독립적인 카운트 필드 생성: 가독성을 위해 $group 파이프라인 내에서 삼항 연산자($cond)를 사용하여 "linux" 및 "ubuntu"에 대한 독립적인 카운트 필드를 생성할 수 있습니다.
  7. 더 나은 성능을 위한 대체 접근 방식: 보다 효율적인 대안을 위해 약간 다른 $group 파이프라인을 사용하여 사용자 에이전트 수를 집계하고 이름별로 그룹화할 수 있습니다.

마지막으로 , mgo.Collection.Pipe() 메서드를 사용하여 집계 파이프라인을 Go로 변환하여 MongoDB 컬렉션에 대해 실행합니다. 그러면 지정된 사용자 에이전트 및 장소 ID에 대한 관련 개수와 함께 항목 목록이 반환됩니다.

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

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