2017-08-24 86 views
0

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

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

我想移除其中id = 599eab4cf51e0718a42bc9dd的房屋。

+0

请你更新架构您的文章,使我可以帮你correctly.because您使用599eab4cf51e0718a42bc9dd作为key.So我就想到它。 –

回答

0

试试看看这个代码。因为这包含嵌套文档,因此您需要使用其objectId访问所有内容。这里Batch不过是您需要模型的变量。像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); 
     }); 
    }); 
}) 
+0

我不能使用更新和$拉? – niesuch

+0

你想更新文件,通过删除id = 599eab4cf51e0718a42bc9dd.Am我是吗???如果我是正确的,我会更新我的答案更新代码 –

+0

是的,我想这个。 – niesuch