从对象数组中删除特定的嵌套对象

时间:2019-06-19 09:55:09

标签: mongodb mongoose

我需要删除嵌套在对象数组中的特定对象。

以下数据库结构如下:

imd

我想根据 roomId (以查找特定房间)并根据团队批准的状态删除其中一个团队。如果团队已“批准:错误”,则需要将其从对象数组中删除。

我正在使用猫鼬,并提出了以下建议,但没有成功:

     Room.update({"roomId": req.params.roomId},
        {"$pull": { "teams.approved": false } })

多数民众赞成在屏幕截图中显示了正确的roomId: img

3 个答案:

答案 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 } } })

这可能适合您的情况。