セーフモードでアップサートを行うために\lithium\ data \ source \ MongoDB :: update()を使用しています。一部の更新では、重複するキーが渡されるため、予想されるMongoCursorExceptionが発生します。以下のtry/catchはエラーをキャッチせず、Dispatcher :: run()にアタッチしたErrorHandlerにバブルバックします。
try {
$result = Items::update($record, $conditions, array('upsert' => true, 'safe' => true));
} catch (MongoCursorException $e) {
$result = false;
} catch (Exception $e) {
$result = false;
}