2014-12-02 71 views
0
def self.group_by(field, format = 'day') 
    key_op = [['year', '$year'], ['month', '$month'], ['day', '$dayOfMonth']] 
    key_op = key_op.take(1 + key_op.find_index { |key, op| format == key }) 
    project_date_fields = Hash[*key_op.collect { |key, op| [key, {op => "$#{field}"}] }.flatten] 
    group_id_fields = Hash[*key_op.collect { |key, op| [key, "$#{key}"] }.flatten] 
    pipeline = [ 
    {"$project" => {"name" => 1, field => 1}.merge(project_date_fields)}, 
    {"$group" => {"_id" => group_id_fields, "count" => {"$sum" => "$QtyUsed"}}}, 
    {"$sort" => {"count" => -1}} 
    ] 
    collection.aggregate(pipeline)<br> 
end 

當我執行該腳本,計數結果爲0。
我怎樣才能總和屬性QtyUsed總和mongoid指定字段

+0

你能請張貼樣本文件。 – BatScream 2014-12-02 05:28:12

+0

該文檔具有字段名稱(字符串),QtyUsed(int)和DateIssued(日期),created_at(日期)和updated_at(日期)。 文件沒有嵌套文件。 – 2014-12-02 06:45:13

回答

0

你是不是突出「QtyUsed」字段

pipeline = [ 
    {"$project" => {"name" => 1, field => 1, "QtyUsed' => 1}.merge(project_date_fields)}, 
    {"$group" => {"_id" => group_id_fields, "count" => {"$sum" => "$QtyUsed"}}}, 
    {"$sort" => {"count" => -1}} 
    ] 
+0

你能舉個例子嗎? – 2014-12-05 08:25:23