我正在尝试创建一个Project条目,它有一个我想描述为
的语言数组 语言最初可能是空的[],其中的每个对象都必须有一个名为key
的字段,该字段必须是唯一的。
e.g:
{
languages: [],
....
}
或:
{
languages: [ { key: 'en-US } ],
...
}
mongoose Schema看起来像:
{
languages: [{
key: {
type: String,
unique: true,
},
}],
...
}
第一个创作有效:
const project = new Project({
name,
owner: user,
});
await project.save();
然而,此后我得到关于已经使用key: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
,但无济于事。
答案 0 :(得分:0)
正如这个回答提到:Mongodb unique sparse index
答案是将unique: true
与sparse: true
合并。我没有注意到它正在工作,因为我在架构中的下一个集合失败了,直到我在那里添加它。
答案 1 :(得分:0)
尝试一下-将unique: true
,sparse: true
与default: null
组合
{
languages: [{
key: {
type: String,
default: null
unique: true,
},
}],
...
}