E11000重复键错误,即使唯一字段的插入值不同

时间:2019-04-23 07:28:19

标签: mongodb

我的MongoDB查询:

"xyz"

即使以下情况查询也不成功: lovely#love

collection.insertOne({word: 'lovely'})

1 个答案:

答案 0 :(得分:0)

如果为文本索引指定了语言,则MongoDB将应用词干。这意味着将每个单词还原为其词根形式,例如从“可爱”到“爱”。

这可能会导致您的问题,因为“ love”将被插入为“ love”,随后如果尝试插入“ lovely”,这也会减少为“ love”,从而导致重复的键错误。

请参见Text Indexes documentation

  

文本索引标记并词干了   索引条目。 文本索引为每个唯一索引存储一个索引条目   索引中每个文档的每个索引字段中的词干   采集。该索引使用简单的特定于语言的后缀词干。

如果要避免这种情况,可以指定不使用的语言:

  

如果您将语言值指定为“无” ,则文本索引将使用   简单的分词,没有停用词列表,也没有词干。

我也会考虑您的索引策略。对于大多数用例来说,唯一的文本索引是没有意义的。如果您要索引知道唯一的单个单词并且不想阻止它们,请考虑在字段上使用常规索引。