我正在尝试创建一个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: true
和sparse: true
结合起来。我没有注意到它在工作,因为我在模式中的下一个集合失败了,直到我也把它添加到那里。
试试这个-将unique: true
、sparse: true
与default: null
结合起来
{
languages: [{
key: {
type: String,
default: null
unique: true,
},
}],
...
}