如何将新字段添加到mongodb集合中并使其唯一?

时间:2019-05-11 12:04:25

标签: node.js mongodb mongoose

我有一个包含多个现有数据的mongodb集合,现在我想同时将新字段添加到同一集合中,同时新字段需要是唯一字段。

我正在将nodejs与猫鼬一起使用。

以下是我当前的模式。

const user = new mongoose.Schema({
    username: { type: string, required: true},
    token: { type: String, required: true }
});

现在下面是我的新架构

const user = new mongoose.Schema({
    username: { type: string, required: true},
    token: { type: String, required: true },
    nickname: { type: String, required: true }
});

user.index({ "nickname": 1}, { "unique": true });

由于在运行代码时它具有现有数据,因此出现以下错误。

E11000 duplicate key error collection: ourcompany.users index: nickname_1 dup key: { : null }

我相信在创建新字段时,它将使用空值归档。由于新字段是唯一的,因此不允许多个空值。

我有这个document的场景,但是我不明白该怎么做。 请告诉我我需要填补的空白。

预先感谢

1 个答案:

答案 0 :(得分:1)

使用sparse: true使其为

    const user = new mongoose.Schema({
    username: { type: string, required: true},
    token: { type: String, required: true },
    nickname: { type: String, required: true,sparse: true }
});

希望有帮助!