仅更新MongoDB文档中的一个索引

时间:2019-02-05 18:37:59

标签: node.js mongodb mongoose

我在Node.js上有这样的Mongoose模型

NAME: { type: String, required: true, unique: true },
ADDED_BY: { type: Schema.Types.ObjectId },
ADDED_DATE: { type: Date },
STATUS: { type: String, default: 'active' }

我在mongo的控制台上对特定文档进行了更新,我做了下一条指令:

db.roles.update({NAME: "USER"}, {NAME: "USER_ROLE"});

该操作更新了文档的NAME索引,但删除了其他索引(ADDED_BY, ADDED_DATE AND STATUS),我不知道发生了什么,如果不将所有参数发送给que查询,该查询怎么办? 恐怕,我有一个超过50个索引的集合。

预期结果是仅必须修改NAME,而不是所有文档。

2 个答案:

答案 0 :(得分:1)

您需要$set运算符,否则MongoDB会将第二个参数视为您当前文档的替代者,请尝试:

db.roles.update({NAME: "USER"}, { $set: {NAME: "USER_ROLE"} } )

答案 1 :(得分:1)

您需要使用$set运算符

db.roles.update({NAME: "USER"}, { $set: {NAME: "USER_ROLE"}});