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: truesparse: true结合起来。 我并没有注意到它正在工作,因为我在模式中的下一个集合失败了,直到我把它添加到那里。