我需要删除嵌套在对象数组中的特定对象。
以下数据库结构如下:
我想根据 roomId (以查找特定房间)并根据团队批准的状态删除其中一个团队。如果团队已“批准:错误”,则需要将其从对象数组中删除。
我正在使用猫鼬,并提出了以下建议,但没有成功:
Room.update({"roomId": req.params.roomId},
{"$pull": { "teams.approved": false } })
多数民众赞成在屏幕截图中显示了正确的roomId:
答案 0 :(得分:1)
应该像this示例中那样分别指定数组名称和相等条件,请尝试:
await Room.update({"roomId": req.params.roomId}, {"$pull": { "teams": { approved: false } } })
答案 1 :(得分:0)
我认为类似的方法应该起作用:
Room.find({roomId: 1234}).then((result) => {
if (result) {
return Room.remove({result.teams.approved: false})
}
} ).catch()
您仍然需要首先找到所有与 roomId 编号匹配的结果,然后根据批准的删除小组。解决这个问题可能有更好的方法,但我认为这是一种公平的方法。
答案 2 :(得分:0)
Room.updateOne({ roomId: req.params.roomId}, {"$pull": { "teams": { approved: false } } })
这可能适合您的情况。