gpt4 book ai didi

node.js - 将获取查询与插入查询相结合

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

我觉得没有捷径,但仍然想检查一下。

假设我有一个看起来像这样的集合

[{
userName: "Mr. A"
income: 100
expense: null
finalBalance: 200
timestamp: Date.now()
}]

*如果我们有收入金额,则支出将为空,反之亦然最终余额=(收入总和)-(费用总和)堆栈:mongodB+node.js

基本上需要知道在集合中插入新对象的最短和最佳方法,这涉及每次计算新的“finalBalance”。

目前我所做的是每次我必须插入一个新交易,如顶部所示。我使用“时间戳”和“用户名”获取该用户的最后一笔交易,然后从中添加或减去收入或支出金额,然后创建新对象并插入。

例如:

用户最后一笔交易:

{
userName: "Mr. A"
income: 100
expense: null
finalBalance: 200
timestamp: Date.now()
}

需要为用户插入新交易并提供详细信息

({userName: "Mr. A", expense: 10})

第1步:(从数据库获取)从数据库中获取用户的最后一笔交易,以获得最后的“finalBalance”。

第 2 步:从“finalBalance”中减去“费用”金额,得到新的“finalBalance”,即 (200 - 10 = 190)

第3步:(插入数据库)进行插入

{
userName: "Mr. A"
income: null
expense: 10
finalBalance: 190
timestamp: Date.now()
}

有没有一种方法可以让我们计算新的“finalBalance”并通过一次数据库调用插入新对象?

如果解决方案是使用 mongo.js 就太好了

最佳答案

您无法使用自己的文档值来更新它。因此,要执行此类操作,您必须找到它并使用forEach迭代它。然后,它将为您提供您的文档,您将能够修改它们并保存它们:

var yourObj = {userName: "Mr. A", expense: 10};
db.collection.find({yourObj.userName}).forEach(doc => {
doc.finalBalance = doc.finalBalance - yourObj.expense;
doc.timestamp: Date.now();

db.events.save(doc);
})

尝试一下并告诉我它是否按预期工作,

希望有帮助,
最好的问候

关于node.js - 将获取查询与插入查询相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46430746/

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