可靠地检索哪个字段在Mongo中引起“重复键错误”

所以,mongo在代码11000或11001上抛出如下的错误信息:

{ [MongoError: E11000 duplicate key error index: mean-dev.users.$username_1 dup key: { : "asdasd" }] name: 'MongoError', err: 'E11000 duplicate key error index: mean-dev.users.$username_1 dup key: { : "asdasd" }', code: 11000, n: 0, connectionId: 718, ok: 1 } 

现在,我parsing错误消息来检索哪个字段有一个重复的密钥,这是非常肮脏的。 即:我不想testing不同索引(多键,复合等)上的所有types的重复错误,看看这个parsing器是否仍然有效。

我可以使用Node中的任何助手,这让我强健地检索这样的错误的有问题的领域?

如果你想看一个索引的实际键值,而不是parsing一个不可靠的string,你可以简单地查询这个system.indexes集合:

 db.collection('system.indexes').findOne({ ns: 'mean-dev.users', name: 'username_1' }, cb); 

哪一个应该导致包含一个关键对象的文档,列出构成这个索引关键字的所有字段名称,例如:

 { v: 1, ns: 'mean-dev.users', name: 'username_1', key: { username: 1 } }