gpt4 book ai didi

javascript - MongoDB 聚合根据同一集合中的文档添加值

转载 作者:太空宇宙 更新时间:2023-11-04 01:37:42 25 4
gpt4 key购买 nike

我的 MongoDB 聚合管道存在问题,但我似乎无法解决。

我这里有以下文档 ->

{
名称:'名称',
值:[
{ 值:12,日期:2019-01-01 },
{ 值:26,日期:2019-01-02 },
{ 值:34,日期:2019-01-03 }
]
}

我正在运行聚合管道,并且我想使用 $project -> 输出以下文档 ->

{
名称:'名称',
值:[
{ 值:12,日期:2019-01-01,changeDay:0 },
{ 值:26,日期:2019-01-02,更改日期:14 },
{ 值:34,日期: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
]
}
}
}
}
}
}
]`

您可以看到我在最后一个 $project 阶段尝试了 $map,但这在这里不起作用...我不知道如何在光标当前所在的项目之前选择一个项目,以达到其值并减去...

最佳答案

我不确定聚合管道是否可能。但如果是这样,就不值得让聚合如此复杂。获取数据,然后在服务器端执行业务逻辑。

关于javascript - MongoDB 聚合根据同一集合中的文档添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54004793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com