被索引的未设置字段:E11000 重复键错误集合

Posted

技术标签:

【中文标题】被索引的未设置字段:E11000 重复键错误集合【英文标题】:unset field that is indexed makes : E11000 duplicate key error collection 【发布时间】:2020-01-21 09:49:09 【问题描述】:

我有索引为“phone”的表“users” 当我尝试取消设置索引的字段时,第一次正确取消设置,并且此查询返回现在没有字段“电话”的用户

db.getCollection('users').find("phone":null)

但是当我尝试取消设置另一个用户的外地电话时,我收到了这个错误:

MongoError: E11000 duplicate key error collection: fflok.users index: phone_1 dup key:  : null 

请帮忙

这是未设置字段的查询

User.updateOne( _id: userId , $unset: phone: 1 , callback);

【问题讨论】:

【参考方案1】:

试试这个代码。它会帮助你。

User.update(
    _id: userId ,
    $unset:  phone: "" 
)

【讨论】:

实际情况是什么?一旦您取消设置该字段就不能再次设置,或者您不能多次使用取消设置? @user2285831【参考方案2】:

我在架构中尝试了这段代码:

 phone: type: String, trim: true, index: true, unique: true, sparse: true,

在数据库上,我在索引上选择了稀疏:

【讨论】:

以上是关于被索引的未设置字段:E11000 重复键错误集合的主要内容,如果未能解决你的问题,请参考以下文章

MongoError:E11000 重复键错误集合:myFirstDatabase.tours 索引:rating_1 重复键: rating:null

MongoError:E11000 重复键错误集合:workflow.compnies 索引:username_1 dup key: username:null

MongoError: E11000 重复键错误索引

插入期间:E11000 重复键错误索引

Mongoose - 由 :: 11000 E11000 重复键错误索引引起?

Mongoose - 由 :: 11000 E11000 重复键错误索引引起?