2016-08-01 2 views
0

Я должен рассчитать в среднем за день поданную коллекцию. Я создал один запрос в минуту. Теперь я хочу преобразовать этот запрос в среднем за день. Мой за минуту запрос следующим образомКак рассчитать среднее за день поле с помощью MongoDB?

db.voltage.aggregate(
{ 
    $unwind: { 
     path:"$KeyValues", 
     includeArrayIndex:"arrayIndex", 
     preserveNullAndEmptyArrays:true 
    } 
}, 
{ 
    $project: { 
      timestamp:{ 
"$add":["$EventTS",{"$multiply":[60000,"$arrayIndex"]}] 
      } , 
     "RVoltage":"$KeyValues.RVoltage", 
     arrayIndex:1, 
     } 
}, 
{ 
    $match: { 
     $and: [ 
      {RVoltage: {$ne: null}} 
     ] 
    } 
} 
); 

Можете ли вы предложить мне, как вычислить среднее за день?

+1

Можете ли вы обновить с образца документа? –

+0

@CS_noob Я обновляю свой qurstion и добавил свой образец коллекции. –

ответ

1

Группа по дате

db.voltage.aggregate([ 
    {$project: { 
     date: {$dateToString: {format: "%Y-%m-%d", date: "$EventTS"}}, 
     KeyValues:1 
    }}, 
    {$unwind: '$KeyValues'}, 
    {$project: { 
     date: 1, 
     RVoltage: '$KeyValues.RVoltage' 
    }}, 
    {$group: { 
     _id: '$date', 
     avg: {$avg: '$RVoltage'} 
    }}, 
    {$sort: {_id: 1}} 
]) 
{ "_id" : "2015-07-02", "avg" : 234.1845454545454 } 
{ "_id" : "2016-06-30", "avg" : 249.9316666666667 } 
{ "_id" : "2016-07-01", "avg" : 244.08681818181822 } 
+0

Спасибо, наконец, рассчитать avg –

+0

Время выполнения запроса более 24 секунд для более чем 5 записей lac –

+0

У меня есть $ date в миллисекундах .. Как я могу это сделать. Пожалуйста, предложите мне, как конвертировать $ date convert в milliesonds –

Смежные вопросы