Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 从对象数组中删除特定的嵌套对象_Mongodb_Mongoose - Fatal编程技术网

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

Mongodb 从对象数组中删除特定的嵌套对象,mongodb,mongoose,Mongodb,Mongoose,我需要删除嵌套在对象数组中的特定对象 以下数据库结构类似于: 我想根据房间ID(查找特定房间)和团队批准状态删除其中一个团队。如果团队已“批准:错误”,则需要将其从对象数组中删除 我正在使用猫鼬并得出以下结论,但没有成功: Room.update({"roomId": req.params.roomId}, {"$pull": { "teams.approved": false } }) 显示正确roomId的屏幕截图: 应单独指定数组名称和相等条件,如示例所示,请

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

以下数据库结构类似于:

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

我正在使用猫鼬并得出以下结论,但没有成功:

     Room.update({"roomId": req.params.roomId},
        {"$pull": { "teams.approved": false } })
显示正确roomId的屏幕截图:

应单独指定数组名称和相等条件,如示例所示,请尝试:

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

我认为这样做应该奏效:

Room.find({roomId: 1234}).then((result) => {
if (result) {
 return Room.remove({result.teams.approved: false})
 } 
} ).catch()

您仍然需要首先找到与roomId号码匹配的所有结果,然后根据批准的结果删除团队。也许有更好的方法来处理这个问题,但我认为这是一个公平的方法


Room.updateOne({roomId:req.params.roomId},{“$pull”:{“teams”:{approved:false}}})
我尝试了上面的方法,但没有效果unfortunately@Krelis您能检查一下
req.params.roomId
是否有预期的值和类型吗?有,请参阅上面的初始帖子中的屏幕截图。@Krelis我在您的代码中没有看到任何回调/等待,可能是这个问题,你能检查一下吗?TypeError:result.remove不是一个函数Nicolas Maties和mickl的答案是正确的,它可能是
req.params.roomId
给了你一个错误的值,
console.log(req.params.roomId)
并确保它有一个值它确实有一个值并且它是正确的roomId,请看上面帖子中的截图