下面是使用$group
和$project
查詢。
db.collection.aggregate([
{$group : {
_id : { a : "$a" , b : "$b" } ,
count: { $sum : 1 },
c : {$first : "$c"}}},
{$project : {"_id" : 0, a: "$_id.a", b : "$_id.b", "c" : 1}}
]);
輸出: -
/* 1 */
{
"c" : 1,
"a" : 1,
"b" : 2
}
/* 2 */
{
"c" : 1,
"a" : 1,
"b" : 1
}
方法2: -
該查詢將得到的 「C」 S和的 「C」 的號碼不同的值的計跳過。
db.collection.aggregate([
{$group : {
_id : { a : "$a" , b : "$b" } ,
count: { $sum : 1 },
c : {$first : "$c"}}},
{$project : {"_id" : 0, a: "$_id.a", b : "$_id.b", "c" : 1,
"numberOfCSkipped" : {$cond: {if : { $gt : ["$count", 1] }, then : {$subtract: ["$count", 1]}, else : 0 }},
"numberOfDifferentCs" : "$count" }}
]);
numberOfCSkipped - 零表示不存在重複,即只有一個 「C」 爲 「a」 和 「b」 的組合
numberOfDifferentCs - 的 「C」 不同的值的計數S表示「 a」和 「b」 的組合
輸出: -
/* 1 */
{
"c" : 1,
"a" : 1,
"b" : 2,
"numberOfCSkipped" : 0,
"numberOfDifferentCs" : 1
}
/* 2 */
{
"c" : 1,
"a" : 1,
"b" : 1,
"numberOfCSkipped" : 1,
"numberOfDifferentCs" : 2
}
你是否試圖在每個鍵的唯一組合中跳過'douments?或者只是最終的輸出。 [$跳過](https://docs.mongodb.com/manual/reference/operator/aggregation/skip/)做後者。 – Veeram