将查询与插入查询相结合
我觉得这是没有捷径,但仍然想检查。
说我有一个看起来像这样的集合
[{ 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); })
试试吧,告诉我它是否按预期工作,
希望能帮助到你,
最好的祝福