我是 MongoDB 的新手,我想從檔案中的物件陣列中洗掉特定物件。我嘗試了很多,在 StackOverflow 中發現了很多問題。但是沒有一個起作用(也許是我的錯)
以下是用戶與 userId 匹配的集合中的檔案
61f15af01a3c53dfa87e38e6
檔案
{
"_id": "61f15af01a3c53dfa87e38ed",
"user": "61f15af01a3c53dfa87e38e6",
"transactions": [
{
"amount": 50,
"category": "Bills",
"type": "Expense",
"_id": "61f15af01a3c53dfa87e38ee"
},
{
"amount": 100,
"category": "Lottery",
"type": "Income",
"_id": "61f15af01a3c53dfa87e38ef"
},
{
"amount": 200,
"category": "Salary",
"type": "Income",
"_id": "61f15af01a3c53dfa87e38f0"
},
]
}
我想洗掉 ID 為的交易61f15af01a3c53dfa87e38ef
我試過下面的(不知道對不對)
const allTransactions = await Transactions.findOne({ user: req.user._id });
const updatedTransactions = await allTransactions.update(
{ },
{ $pull: { transactions: { id: req.params.id } } },
);
任何人都可以發現錯誤,我該如何實作?
提前致謝 :)
uj5u.com熱心網友回復:
您可以使用以下陳述句在一個資料庫呼叫中執行此操作:
await Transactions.update(
{ user: "61f15af01a3c53dfa87e38e6" },
{ $pull: { "transactions": { _id: "61f15af01a3c53dfa87e38f0" } } }
)
蒙戈游樂場
還要確保型別匹配。如果_id是型別ObjectId而不是string你應該轉換req.params.id為ObjectId第一個。見下文:
await Transactions.update(
{ user: mongoose.Types.ObjectId(req.user._id) },
{ $pull: { "transactions": { _id: mongoose.Types.ObjectId(req.params.id) } } }
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422007.html
標籤:
上一篇:Laravel中更好的watrocreateadmin角色是什么?
下一篇:分隔表格,每個名字跟在表格后面
