Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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
Javascript 使用mongodb删除nodejs中的子文档_Javascript_Angularjs_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 使用mongodb删除nodejs中的子文档

Javascript 使用mongodb删除nodejs中的子文档,javascript,angularjs,node.js,mongodb,mongoose,Javascript,Angularjs,Node.js,Mongodb,Mongoose,我收集了以下数据: { "__v": NumberInt(0), "_id": ObjectId("565443b1172e19d51f98b0ed"), "address": "tohana", "comments": [ { "_id": ObjectId("5654455fe088d89c20736e3c"), "comment": "good man",

我收集了以下数据:

{
       "__v": NumberInt(0),
       "_id": ObjectId("565443b1172e19d51f98b0ed"),
       "address": "tohana",
       "comments": [
         {
           "_id": ObjectId("5654455fe088d89c20736e3c"),
           "comment": "good man",
           "uemail": "dinesh@gmail.com",
           "uname": "dinesh" 
        },
         {
           "_id": ObjectId("565445e471dce6ca20705a84"),
           "comment": "nice person",
           "uemail": "kr@gmail.com",
           "uname": "krishan" 
        },
         {
           "_id": ObjectId("5654460e7aa73bec2064060e"),
           "comment": "bad person",
           "uemail": "Rai",
           "uname": "Rahul" 
        } 
      ],
       "email": "nishantg@ocodewire.com"▼,
       "name": "Nishant" 
    }
有人能建议如何从只有子文档id的“comments”键中删除子文档吗? 例如,我想删除id为5654455fe088d89c20736e3c的子文档,因此应该删除此子文档

以下是我正在使用的代码:

var Users = require("../app/models/users"); //userModel

app.post('/deleteComment/:id', function(req, res) {
    var input = JSON.parse(JSON.stringify(req.body));
    var id = req.params.id;//commentId
    var userId = input.id;//userId

    Users.findByIdAndUpdate(userId, {
      '$pull': {
        'comments':{ '_id': new ObjectId(someStringValue) }
       }
    });
});

但这不会删除数据。

上面提到的JSON是Post请求主体吗?你用mongoose包装器来包装mongodb吗?好的。完美的首先,您必须获得id为(文档id不是注释id)的完整文档,然后从返回文档中删除注释,就像您可以使用lodash或下划线从注释数组中查找和删除注释一样。再次执行此操作后,保存/更新新更新的文档。有道理?
app.post('/deleteComment/:id', function(req, res) {
var input = JSON.parse(JSON.stringify(req.body));
var id = req.params.id;
var userId = input.uid;
 Users.findOneAndUpdate(
        {_id: userId}, 
        {$pull: {comments: {_id: id}}},
        function(err, data){
           if(err) return err;
           res.send({data:data});
    });
})