1

_id新しいドキュメントを Mongo コレクションに挿入するときに、独自の値を割り当てることができません。これが私のPHPです:

$user = array(
'_id'=> new MongoId("4f626fdf1771a8e71a000000"),
'name'=> 'John Smith'
)
try {
    if($col->insert($user)){
        echo 'INSERTED';
    }
} catch(MongoCursorException $e) {
    echo "ERROR: ".$e;
}

これはエラーを表示しませんが、アイテムをコレクションに挿入しません。ただし、MongoId タイプの代わりに文字列変数を_idフィールドに割り当てることができ、それが挿入されます。

4

3 に答える 3

3

デフォルトでは、MongoDB ドライバーは、いわゆる「アンセーフ モード」でコマンドを実行します。これは、リクエストに対してファイア アンド フォーゲットを実行し、エラーをチェックしない場合です。そのため、重複キー エラーが発生した場合はわかりません。

次のように挿入をセーフ モードで実行してみてください。

$col->insert($user, array("safe" => true));

ああ、間違いなく独自の ObjectIds を作成できます (ここでの他の回答とは反対です)。

于 2012-05-24T07:08:05.930 に答える
0

Safe は、将来の使用から非推奨になりました。正しいコマンドを使用していることを確認するには、書き込み懸念 'w' を使用します。

$col->insert($user, array('w'=>true))

ここを参照してください: http://php.net/manual/en/mongocollection.insert.php

于 2013-06-03T15:02:27.497 に答える
-3

MongoDB オブジェクトID を独自に作成することはできません。したがって、ドキュメントをコレクションに挿入するには、次の 2 つの方法があります。

  • MongoDB に ID を作成させます (安全です!)
  • 自分で ID を選択してください。それは配列以外であれば何でもかまいませんが、一意である必要があります。

リファレンス:オブジェクト ID

PHP と MongoDB を組み合わせて使用​​したことはありませんが、単純にフィールドに文字列を割り当てようとしてい_idます。

于 2012-05-23T23:52:07.850 に答える