mongodb使用mongoose:E11000重复密钥错误.save与嵌套集合
我试图创build一个项目项,它有一个我想描述为一个语言数组
语言可以(将)最初是空的,并且其中的每个对象都必须有一个被称为key
的字段,它必须是唯一的。
例如:
{ languages: [], .... }
要么:
{ languages: [ { key: 'en-US } ], ... }
mongoose模式看起来像:
{ languages: [{ key: { type: String, unique: true, }, }], ... }
第一个创作作品:
const project = new Project({ name, owner: user, }); await project.save();
然而,此后,我得到这个错误已经有一个关键的语言:null,即使语言数组是空的…
{ 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
在关键领域是sparse: true
,但无济于事。
正如这个答案所提及的 : Mongodb独特的稀疏索引
答案是将unique: true
与sparse: true
结合起来。 我并没有注意到它正在工作,因为我在模式中的下一个集合失败了,直到我把它添加到那里。