我的文件是这样的:
{ a: [ { u: 1 }, {} ] },
{ a: [ { u: 2 }, {}, {} ] },
{ a: [ { u: 3 } ] }
a.u
如果它存在,我想创建唯一索引:
{
key: { 'a.u': 1 } },
unique: true,
partialFilterExpression: { 'a.u': { $exists: true } }
}
文档将按如下方式编入索引:
u: 1 -> { a: [ { u: 1 }, {} ] }
u: 2 -> { a: [ { u: 2 }, {}, {} ] }
u: 3 -> { a: [ { u: 3 } ] }
u: null -> { a: [ { u: 1 }, {} ] }
u: null -> { a: [ { u: 2 }, {}, {} ] } <-- duplicated key
问题来了a.u
,两条记录都有一个,所以部分过滤器表达式匹配两条记录。a.u
但两者在数组中也有一个空元素,null
因此我得到了重复键的错误null
。
有什么办法可以解决这个问题吗?或者我必须更改架构?