将mongodb中的计算中的个案排除到不除零,最大值

时间:2017-03-13 21:16:14

标签: mongodb mongodb-query

我试图进行计算,并排除“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}}                             
]);

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 }