Kemas kini nilai transaksi dalam mongodb
P粉546257913
P粉546257913 2023-09-13 19:30:49
0
1
492

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....

P粉546257913
P粉546257913

membalas semua (1)
P粉797004644

Untuk memohon$inc code>运算符位于数组的元素处。我们应该使用点符号来指定 dalam dokumen atau tatasusunan terbenam,

Lokasi $

db.collection.update({ email: "abc@123.com", "Wallets.name": "paytm" }, { "$inc": { "Wallets.$.amount": -50 } })

mongoplayground

Masukkan:

[ { "_id": "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 } ] } ]

Keluaran:

[ { "Wallets": [ { "amount": 450, "name": "paytm" }, { "amount": 5000, "name": "hdfc" }, { "amount": 3020, "name": "test" } ], "_id": "64a5a396ec152ab4f5e1c60c", "email": "abc@123.com", "firstName": "Vinayak", "lastName": "Pandey", "password": "b$dpAmLPa9imDKn3qeyhZ/hOwolO6NOYVwNvVgBc9PY8XZZ3n4WYh/O" } ]

Dikemas kini

Kemas kini elemen tatasusunan menggunakan indeks tatasusunan tertentu:

const idx = 1; db.users.updateOne( { email: 'abc@123.com' }, { $inc: { [`Wallets.${idx}.amount`]: -50, }, }, );
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!