使用 MongoCollection::findOne() 方法
要查看我们上一步插入到数据库的文档,可以简单的使用 MongoCollection::findOne() 方法从即合理获得一个简单的文档。 这个方法在只想查询一个结果的时候很有用。
<?php
$connection = new MongoClient();
$collection = $connection->database->collectionName;
$document = $collection->findOne();
var_dump( $document );
?>
以上例程会输出:
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
$connection = new MongoClient();
$db = $connection->database;
$db->foo->insert(array("_id" => 1));
// this will throw an exception
$db->foo->insert(array("_id" => 1));
// this is fine, as it is a different collection
$db->bar->insert(array("_id" => 1));
?>
默认设置时,驱动会在服务器通过了写入请求后返回(译注:“通过”即如果不发生崩溃等情况,待插入的文档就一定会在随后被写入,这并不意味着数据已经写入磁盘)。你可以通过将第二个参数设为 array("w" => 0) 来改变默认行为。此时你的插入请求会立即返回,并且不会抛出 _id 重复的异常。
参见
MongoCollection::findOne() 方法的文档中有对查询的详细说明。
唯一ID的信息查看 MongoId
写入 部分更详细的说明了写操作, Write Concerns 章节深入解释了一些写操作的选项。