我尝试使用复合键为我的集合创建唯一索引,但某些文档可能在索引的字段上为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 }
}
}
)
但仍然返回相同的错误。
我是误解了使用方法还是错误地使用了它?
答案 0 :(得分:0)
刚刚弄明白我的问题是什么。我的monogo版本是3.0.12,而版本3.2中引入了 partialFilterExpression