2017-03-26 3 views
0

私は非常にPythonを学んでいます - これはあなたにとって非常に簡単な質問かもしれません。 しかし、ブラウジング中に解決策が見つかりませんでしたので、ここで助けを探しています;)Pymongoプロジェクトのパーセンテージを計算してdevideを返すなし

条件> = 5の行の割合の割合を取得したいとします。

  • 最初のクエリが成功第一方は正常合計(例えば2000)を返す(例えば400)
  • 条件に合致する行数を返します。
  • 第三1($プロジェクト)は、常に私は本当に任意の助けをいただければ幸いです

予想通り「なし」の代わりに、0.2を返しません。 ありがとう! Condition >= 5行をカウントする

def get_percentage(collection): 

    coll = collection.aggregate([ 
     #get No of rows with Condition>=5 
     {"$match": { "Condition": {"$gte":5} }}, 
     {"$group": {"_id": 0, "count": {"$sum":1}}} 
     , 
     #get total No of rows 
     {"$group": {"_id": 0, "total": {"$sum":1}}} 
     , 
     #get percentage: count/total 
     {"$project" : {"percentage" : {"$divide" : ["$count","$total"]}}} 
    ]) 

    for dot in coll: 
     print(dot['percentage']) 
     percentage = dot['percentage'] 
    return percentage 

答えて

0

使用$cond。以下のステートメントは、javascriptで書かれています。あなたはPythonでキーを引用する必要があります。

collection.aggregate([{ 
    $project: {count: {$cond: {if: {$gte: ['$Condition', 5]}, then: 1, else: 0}}} 
}, { 
    $group: {_id: 0, count: {$sum: '$count'}, total: {$sum: 1}} 
}, { 
    $project: {"percentage" : {"$divide" : ["$count","$total"]}} 
}]) 
+0

これは機能します。 ありがとうございました:) しかし、私はまだ "なぜ"を理解していません - なぜ私のコードは結果を返さなかったのですか? – Paley

+0

@ペリー私はそれが助けてうれしいです。この答えを受け入れるには、チェックマークをチェックしてください。 – gzc

+0

@ Paley各ステップの出力を印刷することをお勧めします。 – gzc

関連する問題