嵌套数组中的部分唯一索引

时间:2018-03-19 04:41:14

标签: arrays mongodb indexing unique-index partial-index

我的文件是这样的:

{ 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,我得到了重复键的错误。

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

0 个答案:

没有答案