-1

username私は mongodb を使い始めています。ユーザーを挿入しようとする操作を実行したいと思いpasswordますemail。一意のインデックスを作成したusernameためemail、指定されたユーザー名または電子メールが既に存在する場合、挿入は失敗します。

そのため、ユーザーのメールアドレスが既に登録されているか、選択したユーザー名が使用されていることをユーザーに報告したいと思います。だから私は限りました:

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}

また、これは最初に発生したエラーのみを報告しているようですが、1 つのクエリで電子メールとユーザー名の両方をチェックする方法はありますか?

4

1 に答える 1

1

両方をチェックしたい場合は、自分でクエリを発行してチェックする必要があります。ドキュメントを挿入するだけの場合は、一意のインデックスの最初の違反のみが報告されます。コードE11000は重複キー エラーのみを示す必要があり、重複キー エラーが発生したことを簡単に見つけることができます。ただし、コレクションを把握するには、エラー メッセージを解析する必要があります。

于 2012-05-12T17:42:51.867 に答える