从MongoDb中的文档中删除数组元素

时间:2017-08-24 11:40:35

标签: mongodb

如何从文档中删除数组元素?示例文档:

{
    "_id" : ObjectId("599eab4cf51e0718a42bc9de"),
    "premises" : {
        "599eab4cf51e0718a42bc9dd" : {
            "id" : ObjectId("599eab4cf51e0718a42bc9dd"),
            "typeOfPremises" : "",
            "level" : "",
            "orientation" : "",
            "view" : "",
            "separateEntrance" : null,
            "size" : "232323",
            "comment" : ""
        }
    }
}

我想删除id = 599eab4cf51e0718a42bc9dd的处所。

1 个答案:

答案 0 :(得分:0)

试试这段代码。因为它包含嵌套文档,因此您需要使用其objectId访问所有内容。批处理只是您需要模型的变量。就像var Batch=require('../models/schema');一样,你没有提到你的模式,所以我假设了一些变量。如果你提到架构,那么你会很清楚。用你的代码改变它。希望这可以帮助。

//Deleting
app.delete('/:Id/premises/:premisesId/599eab4cf51e0718a42bc9dd/:numId',function (req, res, next) {
    Batch.findById(req.params.Id, function (err, batch) {
    if (err) throw err;
    batch.premises.findById(req.params.premisesId, function (err, bat) {
     if (err) throw err;
    bat.599eab4cf51e0718a42bc9dd.id(req.params.numId).remove();
        bat.save(function (err, resp) {
            if (err) throw err;
            res.json(resp);
        });
    });
});


//Updating

app.put(('/:Id/premises/:premisesId/599eab4cf51e0718a42bc9dd/:numId',function (req, res, next) {
    Batch.findById(req.params.Id, function (err, batch) {
        if (err) throw err;
         batch.premises.findById(req.params.premisesId, function (err, bat) {
         if (err) throw err;
       bat.599eab4cf51e0718a42bc9dd.id(req.params.numId).remove();
        bat.599eab4cf51e0718a42bc9dd.push(req.body);
        bat.save(function (err, batc) {
            if (err) throw err;
            console.log('Updated!');
            res.json(batc);
        });
    });
})