MongoDB の複数の属性値を確認して項目リストを取得する
MongoDB を使用する場合、多くの場合、複数の属性値に基づいて特定の項目を取得する必要があります。 MySQL で使用される IN 条件に似た属性値。この記事では、MongoDB でパイプライン操作を組み合わせてこれを実現する方法を説明します。
集計フレームワーク
このシナリオでは、集計フレームワークを使用して、 「venueList」として知られる MongoDB コレクションからのデータをフィルター処理して集約するパイプライン。目標は、会場 ID のリストに基づいて、Linux や Ubuntu などの特定のオペレーティング システムを使用するユーザーの合計数を取得することです。
パイプライン ステージ
パイプラインは、データの変換と要約を行うために連携するいくつかのステージで構成されます。
期待される出力
集約パイプラインの最終出力は次のようになります。指定された会場 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>
以上が集約パイプラインを使用してMongoDBの複数の属性値に基づいてアイテム数を取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。