尝试使用partialFilterExpression创建复合唯一索引

时间:2017-06-14 17:05:18

标签: mongodb indexing database

我尝试使用复合键为我的集合创建唯一索引,但某些文档可能在索引的字段上为null。按照documentation,我似乎可以使用 partialFilterExpression 来完成。

我尝试了如下:

db.collection.createIndex( 
 { a: 1, b: 1, c: 1 },
 { 
   "background":true, 
   "unique": true, 
   "partialFilterExpression": { 
     "a": { "$exists": true }, 
     "b": { "$exists": true }, 
     "c": { "$exists": true } 
   } 
 })

但是这给了我以下错误:

  

exception:E11000重复键错误集合:schema.collection index:a_1_b_1_c_1 dup key:{:null,:null,:null}

我甚至尝试将部分过滤条件更改为:

db.collection.createIndex(
  { a: 1, b: 1, c: 1 },
  { 
    "background":true,
    "unique": true,
    "partialFilterExpression": { 
      "a": { "$exists": true, "$ne": null  },
      "b": { "$exists": true, "$ne": null  },
      "c": { "$exists": true, "$ne": null  }
    } 
  }
)

但仍然返回相同的错误。

我是误解了使用方法还是错误地使用了它?

1 个答案:

答案 0 :(得分:0)

刚刚弄明白我的问题是什么。我的monogo版本是3.0.12,而版本3.2中引入了 partialFilterExpression