我的文件是这样的:
{ 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
,我得到了重复键的错误。
有什么方法可以解决这个问题吗?或者我必须更改架构?