当我尝试更新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'}}
显然它不喜欢它。这是可以理解的!
答案 0 :(得分:11)
试试doc.markModified('networks');
。看起来networks
是无模式类型。 Mongoose无法自动检测对无模式类型的更改。
答案 1 :(得分:2)
您需要完全定义架构才能实现此功能。例如:
networks { 类型:“字符串” }