将查询与插入查询相结合

我觉得这是没有捷径,但仍然想检查。

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

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

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

基本上需要知道在集合中插入新对象的最短和最好的方式,每次都要计算新的“finalBalance”。

当然,我每次都要插入一个像上面显示的新事务。 我使用“时间戳”和“用户名”为该用户获取最后一次转换,然后添加或减去收入或费用金额并创build新对象并插入。

例如:

用户的最后交易:

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

需要为用户插入新的交易细节

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

步骤1:(从数据库中获取)从数据库中获取用户的最后一笔交易,获得最后一笔“最终余额”。

步骤2:从“finalBalance”中减去“费用”金额以获得新的“finalBalance”,其将为(200-10 = 190)

步骤3 :(插入数据库)插入

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

有没有一种方法可以计算新的“finalBalance”,并用一个数据库调用插入新的对象?

如果解决scheme是mongo.js,那将是非常好的

您不能使用自己的文档值来更新它。 所以,要执行这种操作,你必须find它并用forEach迭代它。 然后,它会给你你的文件,你将能够修改它们并save它们:

 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); }) 

试试吧,告诉我它是否按预期工作,

希望能帮助到你,
最好的祝福