2016-12-21 73 views
5

Próbuję usunąć poddokument z identyfikatorem z obiektu przy użyciu Mongoose. Próbowałem użyć aktualizacji fucntion w Moongose, ale po uruchomieniu skryptu Im otrzymywał status "Ok: 1", ale stan "nModyfikacja: 0". Próbowałem użyć następującego skryptu:Jak usunąć dokument podrzędny wewnątrz obiektu za pomocą Mongoose

Page.update({"subPages._id": req.body.ID}, {"$unset":{"subPages":1}}, function (re,q) { 
    console.log(q); 
}); 

Ten skrypt usuwa wszystkie poddokumenty z obiektu. Oto moja json:

{ 
"_id" : ObjectId("585a7a7c2ec07b40ecb093d6"), 
"name_en" : "Head Page", 
"name_nl" : "Head Page", 
"slug_en" : "Head-page", 
"slug_nl" : "hoofd-menu", 
"content_en" : "<p>Easy (and free!) You should check out our premium features.</p>", 
"content_nl" : "<p>Easy (and free!) You should check out our premium features.</p>", 
"date" : ISODate("2016-12-21T12:50:04.374Z"), 
"is_footerMenu" : 0, 
"is_headMenu" : 0, 
"visible" : 1, 
"__v" : 0, 
"subPages" : [ 
    { 
     "content_nl" : "<p>Easy (and free!) You should check out our premium features.</p>", 
     "content_en" : "<p>Easy (and free!) You should check out our premium features.</p>", 
     "slug_nl" : "Sub-page", 
     "slug_en" : "Sub-page", 
     "name_nl" : "Subpage", 
     "name_en" : "Subpage", 
     "date" : ISODate("2016-12-21T14:58:44.733Z"), 
     "subPages" : [], 
     "is_footerMenu" : 0, 
     "is_headMenu" : 0, 
     "visible" : 1, 
     "_id" : ObjectId("585a98a46f657b52489087a8") 
    }, 
    { 
     "content_nl" : "<p>Easy (and free!) You should check out our premium features.</p>", 
     "content_en" : "<p>Easy (and free!) You should check out our premium features.</p>", 
     "slug_nl" : "Subpage", 
     "slug_en" : "Subpage", 
     "name_nl" : "Subpage1", 
     "name_en" : "Subpage1", 
     "date" : ISODate("2016-12-21T14:58:54.819Z"), 
     "subPages" : [], 
     "is_footerMenu" : 0, 
     "is_headMenu" : 0, 
     "visible" : 1, 
     "_id" : ObjectId("585a98ae6f657b52489087a9") 
    } 
] 

}

Chcę usunąć podobiekt z ID

585a98a46f657b52489087a8 

Jak mogę to zrobić?

Odpowiedz

3

Aby usunąć element (subdokument) z tablicy, należy go: $pull.

Page.update({ 
    'subPages._id': req.body.ID 
}, { 
    $pull: { subPages: { _id: req.body.ID } } 
}, function (error, result) { 
    console.log(result); 
}); 

Jeśli chcesz usunąć wszystkie Dokumenty podrzędne (czyli dokonać subPages być pusty), można $set jego wartość będzie pusta tablica.

Page.update({ 
    'subPages._id': req.body.ID 
}, { 
    $set: { subPages: [] } 
}, function (error, result) { 
    console.log(result); 
}); 

Mam nadzieję, że to pomaga.

+0

To prawda! Dziękuję Ci bardzo. Walczyłem z tak długim długim czasem .. –