在Mongo中可靠地检索哪个字段引发了"重复键错误"

Gee*_*Jan 5 mongodb node.js

因此,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 }
Run Code Online (Sandbox Code Playgroud)

现在,我正在解析错误消息以检索哪个字段有重复键,这非常脏.即:我不想测试不同索引(多键,复合等)上的各种重复错误,看看这个解析器是否仍然有效.

我可以使用Node中的任何帮助程序,让我可以为这些错误强有力地检索有问题的字段吗?

小智 0

如果您想查看索引的实际键,而不是解析不可靠的字符串,您可以简单地查询 system.indexes 集合,如下所示:

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

这应该会生成一个包含键对象的文档,列出组成该索引键的所有字段名称,例如:

{
  v: 1,
  ns: 'mean-dev.users',
  name: 'username_1',
  key: {
    username: 1
  }
}
Run Code Online (Sandbox Code Playgroud)