Go を使用して MongoDB の複数の場所にまたがる特定の属性を効率的にカウントするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-25 21:57:03
オリジナル
472 人が閲覧しました

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 : ネストされたvenueList を平坦化し、配列を合計してデータを非正規化します。
  3. $match (2 番目のアプリケーション): 必要な会場 ID のみを考慮するために、巻き戻されたドキュメントを再フィルターします。
  4. $unwind (2 番目のアプリケーション): ネストされた合計サブドキュメントの巻き戻しを続行します。
  5. $group:** **name** フィールドに基づいてドキュメントをグループ化します。合計サブドキュメントの値を取得し、アキュムレータ **$sum.
  6. $cond: を使用して **value** フィールドを集計します。条件式を使用して、それぞれに個別の count フィールドを作成します。必要な属性 (例: 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!