Saya sedang membuat projek Mern dan saya perlu mengemas kini dua medan dalam rekod mongo db.
Saya mempunyai dua medan, satu ialah susunan objek yang dipanggil dompet dan satu lagi adalah transaksi.
Saya mendapat objek daripada bahagian hadapan yang merangkumi jumlah, indeks dompet tempat urus niaga dibuat, kerana dompet ialah susunan objek dalam mongo.
Sekarang saya perlu menolak jumlah transaksi daripada dompet. Bagaimana untuk melakukan ini saya telah menulis pengawal dalam node.js tetapi ia tidak melakukan apa-apa.
Objek yang saya terima dari bahagian hadapan jika..
transaction = { amount: '50', wallet: 0, type: 'expense', description: 'kmop' };
Pengawal Node js saya ialah...
module.exports.addTransaction = async (req, res) => { const transaction = req.body; const {wallet} = transaction; try { const walletName = `Wallets.${wallet}.amount` await UserModel.findOneAndUpdate( { email: email }, { $inc: { walletName : -transaction.amount} , $push: { transactions: { $each: [transaction], $position: 0 } } } ); res.send({stat: true}); } else { console.log(data) res.send({ stat: false }); } } catch (err) { console.log("err",err) res.send({ stat: false, err: err.message }); } };
Rekod pangkalan data mongo saya--
{"_id":{"$oid":"64a5a396ec152ab4f5e1c60c"}, "firstName":"Vinayak", "lastName":"Pandey", "email":"abc@123.com", "password":"b$dpAmLPa9imDKn3qeyhZ/hOwolO6NOYVwNvVgBc9PY8XZZ3n4WYh/O", "Wallets":[{"name":"paytm","amount":500}, {"name":"hdfc","amount":5000}, {"name":"test","amount":3020}]
Andaikata saya membuat transaksi 50 rupee dari dompet namde paytm, jadi apa yang saya mahu ialah Jumlah dalam objek dengan nama paytm harus dikurangkan sebanyak rs-50 jadi pada mulanya ia Selepas diproses, rs500 sepatutnya menjadi rs450....
Untuk memohon
dalam dokumen atau tatasusunan terbenam,
$inc code>
运算符位于数组的元素处。我们应该使用 点符号 来指定Lokasi $
mongoplayground
Masukkan:
Keluaran:
Dikemas kini
Kemas kini elemen tatasusunan menggunakan indeks tatasusunan tertentu: