根据这个高度不完整的列表http://www.mongodb.org/about/contributors/error-codes/,它们都与重复键有关。但是我无法收到11001错误。以下所有内容均引发11000错误:
_id
的文档因此,这完全违背了链接页面,链接页面上的11000用于
_id
,而11001将在更新时发生(而不是插入)。所以我的问题是:11001何时发生?
最佳答案
代码11001
在GitHub的2.5 / 2.6分支中不存在,因此,如果您尝试使用2.5版本,则无法创建它。我确实看过代码,但是找不到直接显示11001
代码的任何路径。
以下几行将显示代码11001
:
db.so.drop();
db.so.insert( { foo: 5 } );
db.so.ensureIndex( { foo: 1 }, { unique: true } );
db.so.insert( { foo: 6 } );
预期的
11000
:db.so.insert( { foo: 5 } );
E11000 duplicate key error index: test.so.$foo_1 dup key: { : 5.0 }
现在到达
11001
:db.so.insert( { foo: 6 } );
db.so.update( { foo: 6 }, { $set: { foo: 5 } } );
E11000 duplicate key error index: test.so.$foo_1 dup key: { : 5.0 }
仍然是原始的
11000
,但是:db.getPrevError();
{
"err" : "E11000 duplicate key error index: test.so.$foo_1 dup key: { : 5.0 }",
"code" : 11001,
"n" : 0,
"nPrev" : 1,
"ok" : 1
}
原始文本错误消息显示
E11000
是一个错误:https://jira.mongodb.org/browse/SERVER-5978