如何在MongoDB中更新混合列方案?

时间:2018-12-01 05:01:20

标签: node.js mongodb

我有一个计划

let AccountSchema = new Schema({
    permission: { type: Schema.Types.Mixed },
    type : {type : Number}
});

当我更新文档

let item = new Account({
    _id : xxxxxxx,
    permission : [{
        '1' : '1',
        '2' : '2'
    }],
    type : 2
});
item.save();

但是此文档仅修改类型而没有修改权限。我的计划还有很多其他列,如果我使用item.markModified('permission')以确保可以进行更新permission,但是我不确定在每种情况下是否都需要更新permission 。我的意思是我需要在方案中输入完整的参数才能更新数据.. :(。请帮助

1 个答案:

答案 0 :(得分:1)

使用Schema.Types.Mixed时,您必须考虑到这是schema-less type,这意味着Mongoose would not automatically keep track的更改类似于Number类型。

您有责任保持对这些更改的监视并致电markModified,以表示要猫鼬更新/保存更改。

所以这样的事情应该起作用:

let item = new Account({
    permission : [{ a : 1 }],
    type : 2
});
item.save();

但是此后,对权限中的对象所做的任何更改都需要为markModified

您可以找到更多详细信息以及必须提供给markModified here的实际路径