MongoCollection::findOne によるドキュメントの検索先ほどの例で追加したドキュメントを表示するには、 シンプルに MongoCollection::findOne を実行してコレクションからドキュメントをひとつ取得します。 このメソッドは、クエリにマッチするドキュメントがひとつだけしかないときや 一件の結果にだけしか興味がない場合に便利です。
<?php上の例の出力は以下となります。
array(6) {
["_id"]=>
object(MongoId)#8 (1) {
["$id"]=>
string(24) "4e2995576803fab768000000"
}
["name"]=>
string(7) "MongoDB"
["type"]=>
string(8) "database"
["count"]=>
int(1)
["info"]=>
array(2) {
["x"]=>
int(203)
["y"]=>
int(102)
}
["versions"]=>
array(3) {
[0]=>
string(5) "0.9.7"
[1]=>
string(5) "0.9.8"
[2]=>
string(5) "0.9.9"
}
}
_id フィールドが 自動的にドキュメントに追加されていることに注目しましょう。 _id は、いわゆる「主キー」フィールドです。 ドキュメントにキーがなければ、ドライバが自動的に追加します。 自前で _id フィールドを指定する場合は、 コレクション内で一意になるようにしなければなりません。 例をごらんください。
<?phpドライバはデフォルトで、サーバーが書き込みを受け付けてから結果を返すことを保証します。 オプションでこの挙動をオフにすることもできます。その場合は、 array("w" => 0) を二番目の引数で渡します。 これは、データベース側での書き込み完了をドライバに待たせないことを意味します。 つまり、_id が重複していてもドライバは例外をスローしません。 参考MongoCollection::findOne に、 データの検索に関する詳細な情報があります。 MongoId には、一意な ID に関する詳細な説明があります。 書き込みのページでは、 安全な書き込みについてより詳しく扱っています。 また Write Concerns では、さまざまな Write Concern オプションについて解説します。 |