mongodbでフィールド名を数える方法はありますか? 私はドキュメントの mongo データベースを持っており、その中に他のドキュメントが埋め込まれています。以下は、データがどのように見えるかの例です。
{
"incident": "osint181",
"summary":"Something happened",
"actor": {
"internal": {
"motive": [
"Financial"
],
"notes": "",
"role": [
"Malicious"
],
"variety": [
"Cashier"
]
}
}
}
別のドキュメントは次のようになります。
{
"incident": "osint182",
"summary":"Something happened",
"actor": {
"external": {
"motive": [
"Financial"
],
"notes": "",
"role": [
"Malicious"
],
"variety": [
"Hacker"
]
}
}
}
ご覧のとおり、アクターは 2 番目のドキュメントで内部から外部に変更されています。私ができるようにしたいのは、アクターのタイプごとにインシデントの数を数えることです。私の最初の試みは次のようになりました:
db.public.aggregate( { $group : { _id : "$actor", count : { $sum : 1 }}} );
しかし、それでサブドキュメント全体が得られ、カウントにはまったく同じドキュメントがいくつあるかが反映されていました。むしろ、内部のカウントと外部のカウントなどを取得したいと思っていました。それを行うエレガントな方法はありますか? エレガントではない場合、誰かがそれを行う汚い方法を教えてもらえますか?