>백엔드 개발 >Golang >Aggregation Pipeline을 사용하여 MongoDB의 여러 속성 값을 기반으로 항목 수를 검색하는 방법은 무엇입니까?

Aggregation Pipeline을 사용하여 MongoDB의 여러 속성 값을 기반으로 항목 수를 검색하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-26 19:20:29532검색

How to Retrieve Item Count Based on Multiple Attribute Values in MongoDB using Aggregation Pipeline?

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

MongoDB로 작업할 때 여러 속성 값을 기반으로 특정 항목을 검색해야 하는 경우가 종종 있습니다. MySQL에서 사용되는 IN 조건과 유사한 속성 값. 이 기사에서는 MongoDB에서 파이프라인 작업 조합을 사용하여 이를 달성하는 방법을 보여줍니다.

집계 프레임워크

이 시나리오에서는 집계 프레임워크를 사용하여 "venueList"라고 알려진 MongoDB 컬렉션에서 데이터를 필터링하고 집계하는 파이프라인입니다. 목표는 장소 ID 목록을 기반으로 Linux 또는 Ubuntu와 같은 특정 운영 체제를 사용하는 총 사용자 수를 검색하는 것입니다.

파이프라인 단계

파이프라인은 데이터를 변환하고 요약하기 위해 함께 작동하는 여러 단계로 구성됩니다.

  1. $match: 지정된 장소 ID를 기반으로 컬렉션을 필터링하여 관련 문서만 고려되도록 합니다. .
  2. $unwind: "venueList" 및 "sum" 배열을 비정규화하여 각 장소 및 사용자 에이전트 배포에 대한 개별 문서를 생성합니다.
  3. $match: 원하는 장소 ID만 포함되도록 비정규화된 문서를 다시 필터링합니다.
  4. $unwind: "sum" 배열을 추가로 비정규화하여 각 사용자 에이전트 배포에 대한 개별 문서를 생성합니다. .
  5. **$group:** $cond 연산자를 사용하여 비정규화된 문서를 집계하여 각 운영 체제(예: "linux" 및 "ubuntu")에 대한 별도의 필드를 만듭니다. $sum 연산자는 각 운영 체제의 총 사용자 수를 계산하는 데 사용됩니다.

예상 출력

집계 파이프라인의 최종 출력은 다음과 같습니다. 지정된 장소 ID에 걸쳐 Linux 및 Ubuntu 사용자의 총 수가 포함된 문서:

<code class="json">{
  "_id": null,
  "linux": 14,
  "ubuntu": 4
}</code>

Go 구현

mgo 패키지를 사용하여 Go에서 이 파이프라인을 사용하려면 , 다음 단계를 따르세요:

<code class="go">query := []bson.M{
  {"$match": bson.M{"venueList.id": bson.M{"$in": []string{"VID1212", "VID4343"}}}},
  {"$unwind": "$venueList"},
  {"$match": bson.M{"venueList.id": bson.M{"$in": []string{"VID1212", "VID4343"}}}},
  {"$unwind": "$venueList.sum"},
  {
    "$group": bson.M{
      "_id":        nil,
      "linux":      bson.M{"$sum": bson.M{"$cond": []interface{}{bson.M{"$eq": []interface{}{"$venueList.sum.name", "linux"}}, "$venueList.sum.value", 0}}},
      "ubuntu":     bson.M{"$sum": bson.M{"$cond": []interface{}{bson.M{"$eq": []interface{}{"$venueList.sum.name", "ubuntu"}}, "$venueList.sum.value", 0}}},
    },
  },
}</code>

위 내용은 Aggregation Pipeline을 사용하여 MongoDB의 여러 속성 값을 기반으로 항목 수를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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