3

私はこの次のデータベースを持っていますこれはすでにデータベースにあるオブジェクトです

{ "_id" : ObjectId("001"), "password" : "test", "user" : "test"}

そのコレクションに物が追加されます

1.ユーザーとパスワードに対するインデックス

2.ユーザーに対する一意のインデックス

同じパラメータをアイテムに挿入しようとすると

my $enter = $db->data->insert({'user'=>'test','password'=>'test'});

$enter は ObjectID の値を返します (ユーザーが繰り返される場合、Objectid ではなくエラー メッセージが表示されます)

モンゴシェル経由

E11000 重複キー エラー インデックス: dataofitem.user

エラーが表示されますが、Perl モジュール ( https://metacpan.org/module/MongoDB )を試してみると

オブジェクト ID として返されました。なぜ Objectid の代わりにエラー メッセージが表示されなかったのか疑問に思っていました

4

1 に答える 1

5

MongoDB::Collection::insert はエラーをチェックしません。

試す

my $enter = $db->data->insert({'user'=>'test','password'=>'test'}, {safe => 1});

失敗時にモジュールを鳴らします。これはMongoDB::Collectionで文書化されています

エラーをチェックしたい場合は、次のこともできます

my $error = $db->last_error();

ここに記載されているとおり。

于 2012-04-29T16:37:51.900 に答える