MongoDb在不在所有文档中的字段上创建唯一索引[重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我在生产Mongo数据库中添加了一个新字段,需要在其上创建一个唯一索引。如果我尝试创建一个,它会不断抛出'异常:E11000重复键错误索引:'。

我理解没有新字段的文件有一个null值导致唯一性违规。我该怎么办?

mongodb
2个回答
1
投票

您可以使用Sparse Index,其中仅包含具有索引字段的文档的条目。例:

db.collection.createIndex( { "newIndex": 1 }, { sparse: true } )

0
投票

您可以制作partial index,以便唯一约束仅适用于存在该字段的文档。例如

db.collection.createIndex(
   { newField: 1 },
   { unique: true, partialFilterExpression: { newField: { $exists: true } } }
)
© www.soinside.com 2019 - 2024. All rights reserved.