Php/docs/mongo.tutorial.findone
使用 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 章节深入解释了一些写操作的选项。