当我尝试更新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) {});
和(请注意,我尝试添加一个回调保存(),它的执行没有错误)
self.userModel.findOne({account: key}, function(err, doc) {
doc.networks = self.client_data[key]['networks'];
doc.markModified('networks').save();
});
任何帮助,将不胜感激!谢谢!
编辑:
的问题是,对象是像这样{'some.thing': {more: 'stuff'}}
显然不喜欢。这是可以理解的!
什么是'self.client_data [键] [ '网络']'的值?尝试用一些文字替换它以帮助您进行调试。 – paulmelnikow 2012-03-28 19:19:02
这是一个相当大的对象,但我知道这是一个事实,但它是人口稠密的。我尝试用'doc.networks = {test:123};'替换它,但仍然没有保存文档。 – rickibalboa 2012-03-28 19:36:37
在第一个版本中,我猜测?任何机会只是不匹配任何东西? 'delete({account:key})'工作吗? – paulmelnikow 2012-03-28 19:57:09