【发布时间】:2025-11-30 06:15:03
【问题描述】:
我正在获取所有记录的 value 字段,并用下一个记录值减去它。 这是我的记录的样子:
{
"name":"abc",
"value":10
},
{
"name":"xyz",
"value":20
},
{
"name":"pqr",
"value":30
}
我已经通过这些查询来实现它,但没有得到想要的输出。
查询:
db.myc.aggregate([{
$unwind: "$value"
}, {
$group: {
_id: "$name",
value1: {
$first: "$value"
},
value2: {
$last: "$value"
},
}
}, {
$project: {
Output: {
$subtract: ["$value1", 10]
}
}
}]);
得到如下输出:
{ "_id" : "abc", "Output" : 0 }
{ "_id" : "xyz", "Output" : 10 }
{ "_id" : "pqr", "Output" : 20 }
我正在寻找的期望输出,第一条记录 值 应该保持不变,即 10,下一条记录值(20)应该减去第三条记录值(30)。这样所有字段值都将保持 10。(输入数据将始终与下一个数据有 10 的差异)。
谁能告诉我如何实现它???
【问题讨论】:
-
这不是
$first和$last所做的。如果这是您所期望的,您将无法访问上一个或下一个文档。对这种类型的事物使用光标。 -
@NeilLunn 当然,我会试试光标。