在这里,我们有以下查询:问题与聚集查询
db.getCollection('triggered_policies').aggregate(
[{ "$match" : { "policy_name" : "EIQSVCFG-2111-Spam Activity"}},
{ "$project" : { "cust_created_at" : { "$add" : [ "$created_at" , 19800000]} , "event_ids" : "$event_ids" , "trigger_time" : "$trigger_time" , "created_at" : "$created_at" , "triggered_rules" : "$triggered_rules"}},
{ "$sort" : { "created_at" : -1}},
{ "$group" :
{ "_id" :
{
"$hour" : "$cust_created_at"} ,
"triggered_policies" : { "$addToSet" : { "trigger_time" : "$trigger_time" , "created_at" : "$created_at" , "event_ids" : "$event_ids" , "triggered_rules" : "$triggered_rules"}
}
}
},
{ "$sort" : { "_id" : 1}}
])
上述查询的输出继电器是:
{
"_id" : 11,
"triggered_policies" : [
{
"trigger_time" : NumberLong(1484633489000),
"created_at" : ISODate("2017-01-17T06:11:05.452Z"),
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
],
"triggered_rules" : [
{
"policy_rule" : ObjectId("58776ea2a7c5541661c0424c"),
"trigger_time" : NumberLong(1484633489000),
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
]
}
]
},
{
"trigger_time" : NumberLong(1484633489000),
"created_at" : ISODate("2017-01-17T06:11:05.453Z"),
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
],
"triggered_rules" : [
{
"policy_rule" : ObjectId("58776ea2a7c5541661c0424c"),
"trigger_time" : NumberLong(1484633489000),
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
]
}
]
},
{
"trigger_time" : NumberLong(1484633489000),
"created_at" : ISODate("2017-01-17T06:11:05.454Z"),
"event_ids" : [
"000159ab0c6c3c722f6248",
"000159ab0c6c3b722f624b"
],
"triggered_rules" : [
{
"policy_rule" : ObjectId("58776ea2a7c5541661c0424c"),
"trigger_time" : NumberLong(1484633489000),
"event_ids" : [
"000159ab0c6c3c722f6248",
"000159ab0c6c3b722f624b"
]
}
]
}
]
}
但我们期待的是:
在上面查询我们删除了以下字段组合的重复值:
- trigger_time
- created_at
- event_ids
- triggered_rules
但是,我们需要有以下三个方面的独特价值:
- trigger_time
- event_ids
- triggered_rules
而且第一created_at
字段的字段值。
请帮助我们得到查询(将提供输入数据也如果你想)。
我输入的是:
{
"_id" : ObjectId("587db579a7c554598e3bb56e"),
"policy_name" : "EIQSVCFG-2111-Spam Activity",
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
],
"trigger_time" : NumberLong(1484633489000),
"created_at" : ISODate("2017-01-17T06:11:05.452Z"),
"triggered_rules" : [
{
"policy_rule" : ObjectId("58776ea2a7c5541661c0424c"),
"trigger_time" : NumberLong(1484633489000),
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
]
}
]
}
{
"_id" : ObjectId("587f0801a34837e4ff3c5deb"),
"policy_name" : "EIQSVCFG-2111-Spam Activity",
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
],
"trigger_time" : NumberLong(1484633489000),
"created_at" : ISODate("2017-01-17T06:11:05.452Z"),
"triggered_rules" : [
{
"policy_rule" : ObjectId("58776ea2a7c5541661c0424c"),
"trigger_time" : NumberLong(1484633489000),
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
]
}
]
}
{
"_id" : ObjectId("587f0807a34837e4ff3c5dec"),
"policy_name" : "EIQSVCFG-2111-Spam Activity",
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
],
"trigger_time" : NumberLong(1484633489000),
"created_at" : ISODate("2017-01-17T06:11:05.452Z"),
"triggered_rules" : [
{
"policy_rule" : ObjectId("58776ea2a7c5541661c0424c"),
"trigger_time" : NumberLong(1484633489000),
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
]
}
]
}
{
"_id" : ObjectId("587f0811a34837e4ff3c5ded"),
"policy_name" : "EIQSVCFG-2111-Spam Activity",
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
],
"trigger_time" : NumberLong(1484633489000),
"created_at" : ISODate("2017-01-17T06:11:05.452Z"),
"triggered_rules" : [
{
"policy_rule" : ObjectId("58776ea2a7c5541661c0424c"),
"trigger_time" : NumberLong(1484633489000),
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
]
}
]
}
{
"_id" : ObjectId("587f0861a34837e4ff3c5dee"),
"policy_name" : "EIQSVCFG-2111-Spam Activity",
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
],
"trigger_time" : NumberLong(1484633489000),
"created_at" : ISODate("2017-01-17T06:11:05.453Z"),
"triggered_rules" : [
{
"policy_rule" : ObjectId("58776ea2a7c5541661c0424c"),
"trigger_time" : NumberLong(1484633489000),
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
]
}
]
}
{
"_id" : ObjectId("587f2932a34837e4ff3c5def"),
"policy_name" : "EIQSVCFG-2111-Spam Activity",
"event_ids" : [
"000159ab0c6c3c722f6248",
"000159ab0c6c3b722f624b"
],
"trigger_time" : NumberLong(1484633489000),
"created_at" : ISODate("2017-01-17T06:11:05.454Z"),
"triggered_rules" : [
{
"policy_rule" : ObjectId("58776ea2a7c5541661c0424c"),
"trigger_time" : NumberLong(1484633489000),
"event_ids" : [
"000159ab0c6c3c722f6248",
"000159ab0c6c3b722f624b"
]
}
]
}
和预期的出将是:
{
"_id" : 11,
"triggered_policies" : [
{
"trigger_time" : NumberLong(1484633489000),
"created_at" : ISODate("2017-01-17T06:11:05.452Z"),
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
],
"triggered_rules" : [
{
"policy_rule" : ObjectId("58776ea2a7c5541661c0424c"),
"trigger_time" : NumberLong(1484633489000),
"event_ids" : [
"000159ab0c6c3c722f6249",
"000159ab0c6c3b722f624a"
]
}
]
},
{
"trigger_time" : NumberLong(1484633489000),
"created_at" : ISODate("2017-01-17T06:11:05.454Z"),
"event_ids" : [
"000159ab0c6c3c722f6248",
"000159ab0c6c3b722f624b"
],
"triggered_rules" : [
{
"policy_rule" : ObjectId("58776ea2a7c5541661c0424c"),
"trigger_time" : NumberLong(1484633489000),
"event_ids" : [
"000159ab0c6c3c722f6248",
"000159ab0c6c3b722f624b"
]
}
]
}
]
}
避免张贴代码的图像,这是不鼓励在计算器上 – chridam
我已经编辑我的答案和查询,以及。您可以再次尝试聚合查询,但请注意,您提供的输出具有相同的'trigger_time'字段。 – Karlen