在尝试更新mongodb中的嵌入式文档时,我遇到了一个问题。我尝试了两种方法,但均无济于事,并且我在各处搜索了为什么它没有更新的原因。无论如何,我的架构看起来像这样(我可能会注意到,我要更新的嵌入式文档是混合类型的)。
var UserModel = new mongoose.Schema({
account: String,
salt: String,
password: String,
highlight_words: String,
networks: {},
ip: String,
ident: String,
is_connected: Boolean,
account_type: String
});
我尝试使用这两个代码段更新“网络”,但均无效。我要拔头发了。
self.userModel.update({account: key}, {networks: self.client_data[key]['networks']}, function(err) {});
并且(请注意,我尝试将回调添加到save(),并且执行时没有错误)
self.userModel.findOne({account: key}, function(err, doc) {
doc.networks = self.client_data[key]['networks'];
doc.markModified('networks').save();
});
任何帮助,将不胜感激!谢谢!
编辑:
问题在于对象很像
{'some.thing': {more: 'stuff'}}
,显然不喜欢。这是可以理解的! 最佳答案
尝试doc.markModified('networks');
。看来networks
是无模式类型。 Mongoose 无法自动检测对无模式类型的更改。