无法弄清楚如何摆脱MongoDB中的这个重复键错误
我一直坚持这个错误几个小时,我无法弄清楚导致重复键错误的原因。
重复的密钥为null,我不知道这是指什么。这是错误:
{ MongoError: insertDocument :: caused by :: 11000 E11000 duplicate key error index: my_db.schools.$username_1 dup key: { : null }
我有一个学校模式:
var mongoose = require('mongoose');
var passportLocalMongoose = require('passport-local-mongoose');
var schoolSchema = new mongoose.Schema({
name: String,
location: String,
author: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
username: String
},
code: Number,
members: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "User"
}
],
cluborgs: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Cluborg"
}
],
date_joined: {type: Date, default: Date.now}
});
schoolSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("School", schoolSchema);
回答如下:
从Mongoose属性中删除unique: true
不会自动从MongoDB中删除索引。
此外,如果从Mongoose模式中完全删除属性,它也不会自动从MongoDB中删除相关索引。
所以看起来在你的情况下,MongoDB仍然期望你从模式中删除一个唯一的School.username值,因此默认为每个文档的空值 - 触发唯一约束。
我个人使用MongoDB CLI来删除这些索引,如果它发生的话,虽然我怀疑在该属性上设置unique: false
也会起作用。
无法弄清楚如何摆脱MongoDB中的这个重复键错误
我一直坚持这个错误几个小时,我无法弄清楚导致重复键错误的原因。
重复的密钥为null,我不知道这是指什么。这是错误:
{ MongoError: insertDocument :: caused by :: 11000 E11000 duplicate key error index: my_db.schools.$username_1 dup key: { : null }
我有一个学校模式:
var mongoose = require('mongoose');
var passportLocalMongoose = require('passport-local-mongoose');
var schoolSchema = new mongoose.Schema({
name: String,
location: String,
author: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
username: String
},
code: Number,
members: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "User"
}
],
cluborgs: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Cluborg"
}
],
date_joined: {type: Date, default: Date.now}
});
schoolSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("School", schoolSchema);
回答如下:
从Mongoose属性中删除unique: true
不会自动从MongoDB中删除索引。
此外,如果从Mongoose模式中完全删除属性,它也不会自动从MongoDB中删除相关索引。
所以看起来在你的情况下,MongoDB仍然期望你从模式中删除一个唯一的School.username值,因此默认为每个文档的空值 - 触发唯一约束。
我个人使用MongoDB CLI来删除这些索引,如果它发生的话,虽然我怀疑在该属性上设置unique: false
也会起作用。
与本文相关的文章
评论列表 (0)
- 暂无评论