0
特別是與美元開始在system.profile
字段名/組 - >updateobj.$set
如何投射,使用聚合
鑑於格式的文檔:
db.system.profile.findOne({op: "update", ns: "zz.top", upsert: true})
{
"_id" : ObjectId("589c6bf4be7acf4c5b8a4cb4"),
"op" : "update",
"ns" : "zz.top",
"query" : {
"ts" : ISODate("2017-02-07T16:08:01Z"),
"user" : 22464
},
"updateobj" : {
"$set" : {
"version" : "2.0.4",
...
}
}
...
}
我想找到(簡化的情況下,對於我的問題)所有具有重複版本的文檔。
的東西,如:
db.system.profile.aggregate(
{$match: {op: "update", ns: "zz.top", upsert: true}},
{$group: {_id : {uid : "$updateobj.$set.version"}, count: {$sum : 1}}},
{$match: {count : {$gt : 1}}}
)
或:
db.system.profile.aggregate(
{$match: {op: "update", ns: "zz.top", upsert: true}},
{$project: {"v" : "$updateobj.$set.version"}},
{$group: {_id : "$v", count: {$sum : 1}}},
{$match: {count : {$gt : 1}}}
)
笨拙,我一直在掙扎。