У меня есть проблема с конвейером агрегации MongoDB, которую я не могу решить.
У меня есть следующий документ здесь ->
{
name: 'name',
values: [
{ value: 12, date: 2019-01-01 },
{ value: 26, date: 2019-01-02 },
{ value: 34, date: 2019-01-03 }
]
}
У меня запущен конвейер агрегации, и я хочу вывести следующий документ с $ project ->
{
name: 'name',
values: [
{ value: 12, date: 2019-01-01, changeDay: 0 },
{ value: 26, date: 2019-01-02, changeDay: 14 },
{ value: 34, date: 2019-01-03, changeDay: 8 }
]
}
То есть мне нужно, чтобы changeDay был вычитанием значения издокумент минус значение из документа, предшествующего этому, и так далее.
Надеюсь, я прояснил это достаточно.
Если это поможет - я пытаюсь запросить простой документ временного ряда по временному диапазону, и мне нужно вывести изменениезначение каждого дня.
Пока у меня есть эта агрегация MongoDB ->
`[
{
'$match': {
'pageid': '36606016799'
}
}, {
'$lookup': {
'from': 'likes',
'localField': 'likes',
'foreignField': '_id',
'as': 'likes'
}
}, {
'$unwind': {
'path': '$likes'
}
}, {
'$match': {
'likes.date': {
'$gte': Date('Sat, 29 Dec 2018 22:00:00 GMT'),
'$lte': Date('Tue, 01 Jan 2019 22:05:00 GMT')
}
}
}, {
'$group': {
'_id': '$name',
'likes': {
'$push': '$likes'
},
'picture': {
'$first': '$$ROOT.picture'
}
}
}, {
'$project': {
'_id': 1,
'picture': 1,
'likes': {
'value': 1,
'change': {
'$map': {
'input': '$likes',
'as': 'like',
'in': {
'$add': [
'$$like.value', 100
]
}
}
}
}
}
}
]`
Вы можете видеть, что я пробовал $ map на последнем этапе $ проекта, но это не работаетздесь ... я не знаю, как я могу выбрать элемент перед тем, где находится курсор в данный момент, чтобы достичь его значения и вычесть ...