【问题标题】:unset field that is indexed makes : E11000 duplicate key error collection被索引的未设置字段:E11000 重复键错误集合
【发布时间】: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);

【问题讨论】:

    标签: mongoose null duplicates unset


    【解决方案1】:

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

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

    【讨论】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 2017-03-02
      • 2021-10-25
      • 2021-11-04
      • 2021-08-28
      • 2019-07-11
      • 2021-09-19
      相关资源
      最近更新 更多