1

sequenceIdを再調整するjs関数をコレクションdb.system.jsに保存しました。これを使用して、エンティティのid値を設定します。

次のように、MongoDBのDoctrineodmでこのストアドプロシージャを使用しようとしています。

$data=new Application\Entities\Data;
$data->setId("getSequence('campagne')");
$dm->persist($data);

ただし、関数は評価されず、エンティティDataのアノテーション@Idが設定した値を上書きします。

Doctrine odmでストアドプロシージャを使用することは可能ですか?

前もって感謝します

ジセラ

4

1 に答える 1

0

MongoDBのサーバー側のJavaScript実行は、ストアドプロシージャと同じではありません。これは、サーバー上で実行されるJavaScriptコンテキスト(db.eval、$ where、map / reduceなど)からのみ呼び出すことができます。

より一般的なパターンは、カウンタードキュメントとアトミック$inc関数を使用してIDをインクリメントおよび取得することです。参照:自動インクリメントフィールドの作成方法

于 2012-07-18T02:21:54.923 に答える