2017-03-13 7 views
0

イムは、計算をやろうとしている、「n」は、私は必要なものはゼロは最大値

ときのケースを除いて、ゼロ除算しないようにMongoDBの中で計算からケースを除外である:

する最大のN =

{ "_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"} 

0ので、この場合には、私は

部門を有することになるすべてのケースの値/ nの値を除く場合は、= {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

以下の集計を試すことができます。

$matchnの値を0と$groupの残りのドキュメントでフィルタリングして最大値を見つけることができます。

db.collection.aggregate([{$match:{n:{$ne:0}}}, 
{$group:{_id:null, max:{$max: {$divide:["$value", "$n"]}}}}]) 

サンプル応答

{ "_id" : null, "max" : 4 }