35

ドキュメントの作成:

$db->collection->insert($content);
// $newDocID = ???

新しいドキュメントの ID を取得しようとしています。どのように?ありがとう。

4

4 に答える 4

62

docsによると、渡す配列はフィールドinsertで修正され_idます:

$db->collection->insert($content);
$newDocID = $content['_id'];
于 2010-12-24T10:38:00.853 に答える
34

挿入前に _id を取得することもできます。新しい MongoId を使用してドキュメントに _id フィールドを追加するだけです。

$content['_id'] = new MongoId();
$db->collection->insert($content);

また、これには次のような優れた利点があります。

  1. 前の回答で ZagNut がコメントに投稿したような fsync フラグは必要ありません。したがって、DB からの応答を待つ必要はありません。
  2. IDを取得するために実際にDBに何かを挿入する必要はありません。したがって、いくつかの関連オブジェクトを準備してから、それらを挿入または挿入しないことができます-mongoがサポートしていないトランザクションのように(まだ?)。
  3. 実際には、db ではなくアプリケーションで id を生成できます。そのため、挿入の前後で好きなことを行うことができます。
于 2012-07-13T09:18:44.757 に答える
1
 $newDocument = $db->collection->findAndModify ( $row, $row, null, array('new'=>true,'upsert' => true));
 $strId = $newDocument['_id']->{'$id'};

http://php.net/manual/en/mongocollection.findandmodify.php

于 2014-09-20T22:56:55.013 に答える