次のデータセットのようなコレクションがあります。これはuseragents
です。文書内を指定されたパラメータでフィルタリングして集計値を取得する方法
各useagents
の値の合計額を見つけるためのユースケースがあります。この例では、例としてLinuxとUbuntu OSとしてuseragents
を使用しています。それはダイナミックにすることができます。私の最初のステップとして、集約フレームワークを使用して各ユーザーエージェントの集計値を集計するソリューションが見つかりました。
background questionを参照してください。
ただし、それぞれのパラメータリストに基づいて、それぞれvenuelist
、ssidlist
、maclist
をチェックして値を集計したいとします。私のデータ構造が複雑になることがあるので、私にとっては非常に難しい問題です。
は、私は、次のパラメータが与えられ、各いるUserAgentのaggreagate合計量(Linuxでは、Ubuntuの)を取得したい:
のParameterList 1
venueid :: [VID001, VID002] // this is compulsory field in parameter list ssids : [SSID001] // this is optional filed in parameter list mac : [22:22:22:22:22:22] output linux: 12 + 2 = 14 ubuntu : 2 + 5 = 7
のParameterList 2
venueid :: [VID001, VID002] // this is compulsory field in parameter list mac : [22:22:22:22:22:22] // this is optional filed in parameter list output linux: 12 + 4 + 2 = 16 ubuntu : 2 + 2 + 5 = 7
これはサンプルデータセット
です{
"_id" : ObjectId("57f940c4932a00aba387b0b0"),
"tenantID" : 1,
"date" : "2016-10-09 00:23:56",
"venueList" : [
{
"id" : “VID001”,
"sum" : [
{
"name" : "linux",
"value" : 16
},
{
"name" : "ubuntu",
"value" : 7
}
],
“ssidList” : [ // this is list of ssid’s in venue
{
"id" : “SSID001”,
"sum" : [
{
"name" : "linux",
"value" : 12
},
{
"name" : "ubuntu",
"value" : 2
}
],
“macList” : [ // this is mac list inside particular ssid ex: this is mac list inside the SSID1212
{
"id" : “22:22:22:22:22:22”,
"sum" : [
{
"name" : "linux",
"value" : 12
},
{
"name" : "ubuntu",
"value" : 2
}
]
}
]
},
{
"id" : “SSID002”,
"sum" : [
{
"name" : "linux",
"value" : 4
},
{
"name" : "ubuntu",
"value" : 5
}
],
“macList” : [ // this is mac list inside particular ssid ex: this is mac list inside the SSID1212
{
"id" : “22:22:22:22:22:22”, // this should be select in parameterlist 02 because there is no ssid selection in parameter list.
"sum" : [
{
"name" : "linux",
"value" : 4
},
{
"name" : "ubuntu",
"value" : 2
}
]
},
{
"id" : “44:44:44:44:44:44”,
"sum" : [
{
"name" : "linux",
"value" : 12
},
{
"name" : "ubuntu",
"value" : 3
}
]
}
]
}
]
},
{
"id" : “VID002”,
"sum" : [
"sum" : [
{
"name" : "linux",
"value" : 2
},
{
"name" : "linux",
"value" : 5
}
],
],
"ssidList" : [
{
"id" : “SSID001”,
"sum" : [
{
"name" : "linux",
"value" : 2
},
{
"name" : "linux",
"value" : 5
}
],
"macList" : [
{
"id" : “22:22:22:22:22:22”,
"sum" : [
{
"name" : "linux",
"value" : 2
}
{
"name" : "linux",
"value" : 5
}
]
}
]
}
]
}
]
}
私はこの問題を解決するのを手伝ってください、私はそれを感謝します。私のデータセットに問題がある場合は、それに言及してください。私はMongoDBの新鮮なので、あなたのコメントは私にとってもっと助けになります。
この1つは、あなたに指導を与えることを望みます。http://stackoverflow.com/questions/14568283/mongodb-aggregation-count-array-set-size –
応答ありがとう。私はフィルタ結果が別のパラメータの複数のパラメータにどのように設定されるかに問題があります。 –
この場合、フィルタ結果のネストされたクエリメカニズムが必要です。mongodbでクエリを生成する方法に問題があります –