【发布时间】:2021-09-11 10:48:21
【问题描述】:
我有一个 mongoDB 集合,我将它与 mongoose Schema 一起使用:
const balanceSchema = new mongoose.Schema({
userId: {
type: mongoose.Schema.Types.ObjectId, ref: 'user'
},
incomes: { Number },
fees: { Number },
},
{ strict: false })
我将严格模式设置为 false,因此我可以使用它的值推送我想要的任何“键”。
我只想删除“收入”类别之一,但我无法指定该行,因为没有“定义的键”。 这是里面数据的一个例子:
{
"_id": {
"$oid": "60c763df3d260204865d2069"
},
"incomes": {
"income1": 1300,
"anyKeyNameIWant": 400
},
"fees": {
"charge1": 29,
"charge2": 29,
"chargetest": 29,
"charge7": 29
},
"__v": 0,
}
我试过了,但没有成功:
module.exports.deleteOneBalance = (req, res) => {
let data = req.body
if (!ObjectID.isValid(req.params.id))
return res.status(400).send('ID unknown : ' + req.params.id);
BalanceModel.update(
{ _id: req.params.id },
{
$unset: { "incomes.salairetest": "400" }
}), (err, docs) => {
if (!err) res.send('Deleted. ' + data)
else console.log('Error : ' + err)
}
}
有什么想法吗?
【问题讨论】:
-
查看如何引用embedded fields。
-
请使用正确的术语。 “文件”是什么意思?为什么您要求“删除”但在您的代码中尝试更新。见Documents
-
我只想删除“收入”类别中的一个“键/值”。我使用 update 因为我看到了 update 和 $unset 的例子
-
好的,但是“收入”中的一个“键/值”是什么意思?你需要知道你想删除哪一个 - 或者你想保留哪些。
-
@WernfriedDomscheit 好吧,在我的前面,每个数据的侧面都有一个按钮。因此,如果客户点击 "income1": "700" 旁边的按钮,那么它会从对象 {incomes: {} } 中删除 "income1": "700" 而不会删除其他数据
标签: node.js reactjs mongodb mongoose schema