2017-12-03 180 views
0

嘿我有一个问题,从我的数据库中删除嵌套数组,我想使用findOneAndUpdate$pull。我的意思是从reply阵列中删除项目。我尝试通过_id找到评论项目并删除此回复项目,但这不起作用。请看下面我的代码。

我的架构

var productSchema = new Schema({ 

description: [{ 
    type: String, 
    require: true, 
}], 
comments: [{ 
    body: { 
     type: String, 
     trim: true, 
    }, 
    author: { 
     type: String, 
    }, 
    date: { 
     type: Date, 
    }, 
    reply: [{ 
     body: { 
      type: String, 
      trim: true, 
     }, 
     author: { 
      type: String, 
     }, date: { 
      type: Date, 
     } 
    }] 
    }] 
}); 

API

router.put('/dashboard/admin/komentarz/odpowiedz/usun/', function(req, res) { 
var currentCourse = req.body._id; // main item id 
var deleteReply = req.body.reply; // reply item id 
var commentId = req.body.commentId // comments item id 
Product.findOneAndUpdate({ _id: currentCourse }, { $pull: { reply: req.body.reply }}, function(err, product){ 
    //some code 
}) 

回答

1

拿裁判从Mongoose, pull from subdocument

Product.findOneAndUpdate({ 
    _id: currentCourse, 
    // make sure sub document have a unique field let take _id 
    "comments._id" : 'commentId' 
}, 
{ 
    $pull: { 
     "comments.$.reply": { 
      _id:'replyId' 
     } 
    } 
}, 
{ 
    upsert:false, 
    new:true 
}, function(err, product){ 
    //some code 
})