1
我有一個貓鼬(使用當前版本)架構與子文檔:貓鼬:刪除子文檔的內容
var mySchema = new Schema({
subdocument: { property1: { type: String } }
});
var myModel = mongoose.model('My-Model', mySchema);
現在我想更新現有的文件,並刪除subdocument
像這樣使用doc.subdocument = {}
:
new myModel({ name: 'test', subdocument: { property1: 'test' }}).save(function(err, doc) {
console.log('saved doc:\n', doc);
doc.subdocument = {}; // remove content of subdocument
doc.save(function(err, doc) {
console.log('updated doc:\n', doc); // subdocument: null
myModel.findById(doc._id, function(err, doc) {
console.log('retrieved doc:\n', doc); // subdocument: { property1: 'test' }
mongoose.disconnect();
});
});
});
的回調doc.save
返回文檔與subdocument: null
,所以我估計,更新和預期一樣。但是,在檢查數據庫時,subdocument
的內容仍然存在 - 當我再次檢索文檔時,可以通過上面的示例代碼看到這一點。
在DB文件看起來:
{ subdocument: { property1: 'test' }, __v: 0, _id: 57593a8130f2f7b6a12886b1 }
這是一個錯誤或一個根本性的誤解?
謝謝你,'markModified'完成了這個訣竅!尤其要感謝返回的「doc」文檔的註釋。直到現在,我還是天真地認爲這是存儲在數據庫中的文檔,所以我必須仔細閱讀我的代碼。 – qqilihq
@qqilihq看到我的編輯,我添加了一個'save'的替代方案,可能也很有用。 – robertklep