如何从文档中删除数组元素?示例文档:
{
"_id" : ObjectId("599eab4cf51e0718a42bc9de"),
"premises" : {
"599eab4cf51e0718a42bc9dd" : {
"id" : ObjectId("599eab4cf51e0718a42bc9dd"),
"typeOfPremises" : "",
"level" : "",
"orientation" : "",
"view" : "",
"separateEntrance" : null,
"size" : "232323",
"comment" : ""
}
}
}
我想删除id = 599eab4cf51e0718a42bc9dd的处所。
答案 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);
});
});
})