mongodb使用mongose:E11000上的重复键错误.使用嵌套集合保存



我正在尝试创建一个Project条目,它有一个语言数组,我想将其描述为

语言最初可以(将)为空[],其中的每个对象都必须有一个名为key的字段,该字段必须是唯一的

例如:

{
languages: [],
....
}

或:

{
languages: [ { key: 'en-US } ],
...
}

猫鼬模式看起来像:

{
languages: [{
key: {
type: String,
unique: true,
},
}],
...
}

首次创作作品:

const project = new Project({
name,
owner: user,
});
await project.save();

然而,在那之后,我得到了一个错误,即已经有了一个键为null的语言,即使languages数组是空的。。。

{ MongoError: E11000 duplicate key error collection: yebu.projects index: tags.name_1 dup key: { : null }
at Function.MongoError.create (<redacted>/node_modules/mongodb-core/lib/error.js:31:11)
...

我在密钥字段中尝试了sparse: true,但没有成功。

正如这个答案所提到的:Mongodb唯一稀疏索引

答案是把unique: truesparse: true结合起来。我没有注意到它在工作,因为我在模式中的下一个集合失败了,直到我也把它添加到那里。

试试这个-将unique: truesparse: truedefault: null结合起来

{
languages: [{
key: {
type: String,
default: null
unique: true,
},
}],
...
}

相关内容

  • 没有找到相关文章

最新更新