这个问题在这里已有答案:
我在生产Mongo数据库中添加了一个新字段,需要在其上创建一个唯一索引。如果我尝试创建一个,它会不断抛出'异常:E11000重复键错误索引:'。
我理解没有新字段的文件有一个null
值导致唯一性违规。我该怎么办?
您可以使用Sparse Index,其中仅包含具有索引字段的文档的条目。例:
db.collection.createIndex( { "newIndex": 1 }, { sparse: true } )
您可以制作partial index,以便唯一约束仅适用于存在该字段的文档。例如
db.collection.createIndex(
{ newField: 1 },
{ unique: true, partialFilterExpression: { newField: { $exists: true } } }
)