在尝试更新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 无法自动检测对无模式类型的更改。

09-18 11:48