2017-08-24 129 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