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