2

我的文件是这样的:

{ 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

有什么办法可以解决这个问题吗?或者我必须更改架构?

4

0 回答 0