猫鼬经常返回e11000错误的原因分析

  

  

最近在工作中遇到了一个问题,在定义了模式之后,每一次都保存会报E11000,但是<代码> db.xxx.find() 里面根本就没有冲突的条目,什么情况呢?

  

<强>

  

<强>可能问题出在定义的模式的成员使用了独特,比如:

        var CatalogSchema=新模式({   idCat: {   类型:字符串,   默认值:”,   修剪:没错,   独特的:“Id应该是独一无二的!”   要求:Id不能是空白的   },   titleCat: {   类型:字符串,   默认值:”,   修剪:没错,   独特的:“标题应该是独一无二的!”   要求:标题不能是空白的   }   });      猫鼬。模型(“目录”,CatalogSchema);      

独特表示,不能冲突,迷惑的地方就是,没有冲突啊,其实还有一种可能,或许你压根想不到,就是确实冲突了,因为你给成员改名了。

  

<强>用mongodb的命令行工具查看就知道:

        比;db.catalogs.getIndexes ()   (   {   “v”: 1、   “关键”:{   “_id”: 1   },   “名称”:“_id_”,   “ns”:“ocr-dev.catalogs”   },   {   “v”: 1、   “独特”:没错,   “关键”:{   “名称”:1   },   “名称”:“name_1”,   “ns”:“ocr-dev.catalogs”,   “背景”:真的   },   {   “v”: 1、   “独特”:没错,   “关键”:{   “标题”:1   },   “名称”:“title_1”,   “ns”:“ocr-dev.catalogs”,   “背景”:真的   },   {   “v”: 1、   “独特”:没错,   “关键”:{   “idCat”: 1   },   “名称”:“idCat_1”,   “ns”:“ocr-dev.catalogs”,   “背景”:真的   },   {   “v”: 1、   “独特”:没错,   “关键”:{   “titleCat”: 1   },   “名称”:“titleCat_1”,   “ns”:“ocr-dev.catalogs”,   “背景”:真的   }   )      

  

里面的姓名和头衔就是之前的名字,改成了idCat和titleCat,但是成员还是会在mongodb里面,所以,你要做的就是删除这个集合然后在重新运行猫鼬了:

        比;db.catalogs.drop ()   假   比;db.catalogs.getIndexes ()   []      

然后再在代码里面插入就不会有问题了。

  

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
  

猫鼬经常返回e11000错误的原因分析