我试图进行计算,并排除“n”为零时的情况
我需要的是:
所有案例的最大值value / n,不包括n = 0
的情况 { "_id" : 1, "item" : "abc1", "value" : "1","n" : "1"}
{ "_id" : 2, "item" : "abc1", "value" : "4" ,"n" : "2"}
{ "_id" : 3, "item" : "abc1", "value" : "11" ,"n" : "0"}
{ "_id" : 4, "item" : "abc1", "value" : "12" ,"n" : "3"}
{ "_id" : 5, "item" : "xyz1", "value" : "2" ,"n" : "0"}
所以在这种情况下,我会有
分区将是= {1,2,4}
所以最大值将为4
到目前为止,我设法得到案例列表并计算除法,我标记了n等于零的情况,但我现在迷失了。
db.collection.aggregate([
{"$project":
{
"item": "$item",
"valuet": "$value",
"n": "$n",
"max": { $max: { $cond: [ { $eq: [ "$n", 0 ] }, "N/A", {"$divide":["$value", "$n"]} ] }},
}
},
{"$sort": {"max":-1}}
]);
答案 0 :(得分:0)
您可以尝试以下聚合。
$match
使用0和n
剩余文档过滤$group
值以查找最大值。
db.collection.aggregate([{$match:{n:{$ne:0}}},
{$group:{_id:null, max:{$max: {$divide:["$value", "$n"]}}}}])
样本回复
{ "_id" : null, "max" : 4 }