-1

我开始使用 mongodb,我想做一个操作,尝试使用usernamepassword和插入用户email。我已经建立了唯一索引usernameemail因此如果指定的用户名或电子邮件已经存在,则插入将失败。

所以现在我想向用户报告,他们的电子邮件已经注册,或者选择的用户名已被使用。所以我已经做到了:

CommandResult result = db.getLastError();

但是,除了解析它给我的单个错误消息之外,我没有看到一种简单的方法来读取错误。

{ "serverUsed" : "127.0.0.1:27017" , 
  "err" : "E11000 duplicate key error index: mojulo.users.$username_1  dup key: { : \"blahblah\" }" ,
  "code" : 11000 , 
  "n" : 0 , 
  "connectionId" : 12 , 
  "ok" : 1.0}

此外,这似乎只是报告它遇到的第一个错误,是否有办法在单个查询中同时检查电子邮件和用户名?

4

1 回答 1

1

如果您想对两者都进行检查,则必须自己发出查询以进行检查。如果您只是插入文档,那么它将仅报告第一次违反唯一索引的情况。代码E11000应该只指出一个重复的键错误,这样可以很容易地发现它发生了。您将需要解析错误消息以找出集合。

于 2012-05-12T17:42:51.867 回答