2015-08-17 3 views
0

У меня есть структура объекта, как показано нижеКак запросить массив объектов в MongoDB

{ 
    "_id" : ObjectId("55d164f1c8f2c53a82535b9a"), 
    "plant_name" : "TOTAL", 
    "installed_capacity" : 3473, 
    "wind_data" : [ 
     { 
      "date" : "16-08-15", 
      "timestamp" : " 16:27:15", 
      "generated_capacity" : 617.24, 
      "frequency" : 50.01 
     }, 
     { 
      "date" : "16-08-15", 
      "timestamp" : " 21:21:15", 
      "generated_capacity" : 670.25, 
      "frequency" : 49.94 
     }, ....] 
} 

мне нужно подвести итог (по крайней мере извлечение) «generated_capacity» всех объектов под «wind_data» имеющий " дата "равна" 16-08-15 "объекта" TOTAL ". Я пробовал этот вопрос

db.collectionName.aggregate(
     {"$unwind":"$wind_data"}, 
     {"$match":{"plant_name":"TOTAL","wind_data.date":"16-08-15"}} 
    ) 

Но, этот запрос не работает. Пожалуйста, предложите какой-то способ понять это.

+0

Вы пропускаете закрывающую кавычку, и вы действительно должны также '$ match' первым, как хорошо, но в противном случае это должно работать до этого момента. Что не так? –

+0

Возвращает все поля объекта. Как найти сумму определенного поля внутри массива. Подобно «generate_capacity» внутри массива. – chaitu

+0

добавьте это после соответствия '{" $ group ": {" _ id ":" $ wind_data.date "," generated_capacity_sum ": {" $ sum ":" $ generated_capacity}}} ' – Yogesh

ответ

0

Следующий запрос будет делать работу

db.collectionName.aggregate([  
     {"$unwind":"$wind_data"},  
     {"$match":{"plant_name":"TOTAL","wind_data.date":"16-08-15"}}, 
     {"$group":{"_id":"$wind_data.date","generated_capacity_sum":{"$sum":"$wind_data.generated_capacity"}}} 
    ]) 
Смежные вопросы