最近在工作中遇到了一个问题,在定义了模式之后,每一次都保存会报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 () []
然后再在代码里面插入就不会有问题了。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。