В Mongiodb у меня есть такой объект:
{
"Brand" : "YY1",
"Parent Company" : "XXX",
"Week Ending 02-12-14" : 339.154407659,
"Week Ending 01-19-14" : 458.614275287,
}
{
"Brand" : "YY2",
"Parent Company" : "XXX",
"Week Ending 01-12-14" : 339.154407659,
"Week Ending 03-19-14" : 458.614275287,
}
{
"Brand" : "YY1",
"Parent Company" : "XXX",
"Week Ending 01-12-14" : 339.154407659,
"Week Ending 04-19-14" : 458.614275287,
}
{
"Brand" : "YY2",
"Parent Company" : "XXX",
"Week Ending 01-12-14" : 339.154407659,
"Week Ending 01-20-14" : 458.614275287,
"Week Ending 04-19-14" : 458.614275287,
}
Я пытался вот так. Я должен запросить, как поле должно начинаться с недельного окончания, должно иметь сумму и родительскую компанию как "XXX":
db.getCollection('collection name').aggregate([{
"$addFields": {
"finder": {
"$objectToArray": "$$ROOT"
}
}
}, {
"$match": {
"finder.k": /^Week Ending/
}
}, {
"$group": {
"_id": "Brand",
"sum": {
"$sum": "Week Ending 01-12-14"
}
}
}])
Но я могу суммировать поле, если оно определено как недельное окончание 01-12- 14, но я хочу суммировать поле, начинающееся с окончания недели.
В моей коллекции будет объект, который может содержать окончание недели или нет. Но если в объекте бренда не указан конец недели, значение pos будет равно 0.0,
И мой ожидаемый результат будет таким:
[{
"parent":"XXX"
"Brand" : "YY1",
"pos_value":"float values"**(sum of all values starts with week ending in all YY1 brand object)**
}, {
"parent":"XXX"
"Brand" : "YY2",
"pos_value":"float values"**(sum of all values starts with week ending in all YY2 brand object)**
}]