這是我的第一個Web應用程序,我需要刪除一個嵌套的數組項。你會如何刪除貓鼬的對象與此模式:如何從Mongoose中的數組中刪除嵌套的對象
User: {
event: [{_id:12345, title: "this"},{_id:12346, title:"that"}]
}
我怎麼能去的貓鼬/蒙戈刪除id:12346
?
這是我的第一個Web應用程序,我需要刪除一個嵌套的數組項。你會如何刪除貓鼬的對象與此模式:如何從Mongoose中的數組中刪除嵌套的對象
User: {
event: [{_id:12345, title: "this"},{_id:12346, title:"that"}]
}
我怎麼能去的貓鼬/蒙戈刪除id:12346
?
使用$pull從項的數組中刪除的項目,如以下:
db.User.update(
{ },
{ $pull: { event: { _id: 12346 } } }
)
的$拉操作者從現有陣列刪除一個 值或匹配指定條件的值的所有實例。
第一個參數中的空對象是query
來查找文檔。上述方法刪除集合中所有文檔中數組中_id: 12345
的項目。
db.User.update(
{ },
{ $pull: { event: { _id: 12346 } } },
{ multi: true}
)
Findone將搜索ID,如果沒有找到,那麼犯錯,否則將刪除工作: 如果有,將符合條件的數組中的多個項目,如下圖所示設置multi
選項設置爲true。
User.findOne({id:12346}, function (err, User) {
if (err) {
return;
}
User.remove(function (err) {
// if no error, your model is removed
});
});
如果我正在閱讀此權限,它將搜索「event {_id:123456)」的所有內容並將其刪除,更正?如果需要,我可以通過在第一個條件中添加一個ID來刪除一個實例,對嗎? – illcrx
它將在集合'User'中的所有文檔中的'event'數組中刪除所有'_'項,其中'_id:123456'。如果你想刪除所有匹配的文件,你可以使用'remove'方法 – superUser
'$ pull'將刪除現有數組中的特定值,而不是與條件匹配的整個文檔。如果要刪除與條件匹配的整個文檔,請使用'db.collection.remove' – superUser