gpt4 book ai didi

node.js - MongoDB 查询用一个记录值减去另一个记录值

转载 作者:可可西里 更新时间:2023-11-01 10:09:00 24 4
gpt4 key购买 nike

我正在努力获取所有记录的 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 }

我正在寻找的期望输出,第一个记录 value 应该保持不变,即 10,下一个记录值 (20) 应该减去第三个记录值 (30)。这样所有的字段值都将保持为 10。(输入数据与下一个数据总是有 10 的差异)。

谁能告诉我如何实现它???

最佳答案

输入:

    {
"_id" : ObjectId("5bf52fe30d11f12257d430bf"),
"name" : "fff",
"value" : 50
},
{
"_id" : ObjectId("5bf52fe30d11f12257d430c0"),
"name" : "gd",
"value" : 60
},
{
"_id" : ObjectId("5bf52fe30d11f12257d430c1"),
"name" : "ffagf",
"value" : 70
}

使用以下查询获取所需的输出:

注意:最高值最后会存为0。

  db.myc.find().forEach(
function(doc){
var n = db.myc.findOne({_id:{"$gt":doc._id}});
var diff = n.value-doc.value;
print(tojson(diff));
});

输出:

10
10
0

引用这个答案:Link

关于node.js - MongoDB 查询用一个记录值减去另一个记录值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53405961/

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