从 MongoDB 读取数据
概述
在本页中,您可以查看可复制的代码示例,展示常见的PHP库方法来检索文档。
提示
要了解更多关于本页上显示的任何方法,请参阅每个部分提供的链接。
要使用本页上的示例,请将代码示例复制到示例应用程序或您自己的应用程序中。请确保将环境变量MONGODB_URI
设置为您MongoDB部署的连接字符串,并用您目标命名空间中的值替换<database>
和<collection>
占位符。
示例应用程序
您可以使用以下示例应用程序来测试本页上的代码示例。要使用示例应用程序,请执行以下步骤
确保您的项目中已安装MongoDB PHP库。有关安装MongoDB PHP库的更多信息,请参阅下载和安装指南。
复制以下代码并将其粘贴到新的
.php
文件中。将此页上的代码示例复制并粘贴到文件中的指定行。
1 2 3 require __DIR__ . '/../vendor/autoload.php'; 4 5 $uri = getenv('MONGODB_URI') ?: throw new RuntimeException('Set the MONGODB_URI variable to your Atlas URI that connects to the sample dataset'); 6 $client = new MongoDB\Client($uri); 7 8 $collection = $client->selectCollection('<database>', '<collection>'); 9 10 // Start example code here 11 12 // End example code here
查找单个
以下代码演示了如何从匹配指定条件的集合中检索单个文档
$document = $collection->findOne(['year' => 1994]); echo json_encode($document), PHP_EOL;
要了解关于 findOne()
方法的更多信息,请参阅数据检索指南中的查找单个文档部分。
查找多个
以下代码演示了如何从匹配指定条件的集合中检索所有文档
$resultsMultiple = $collection->find(['year' => 1970]); foreach ($resultsMultiple as $doc) { echo json_encode($doc), PHP_EOL; }
要了解关于 find()
方法的更多信息,请参阅数据检索指南中的查找多个文档部分。
统计集合中的文档数量
以下代码演示了如何统计集合中的文档数量
$result = $collection->countDocuments([]); echo 'Number of documents: ', $result;
要了解关于 countDocuments()
方法的更多信息,请参阅统计文档指南中的统计所有文档部分。
查询返回的文档数量
以下代码示例展示了如何计算符合特定条件的集合中的文档数量
$result = $collection->countDocuments(['year' => 2010]); echo 'Number of companies founded in 2010: ', $result;
要了解更多关于countDocuments()
方法的信息,请参阅《计数文档指南》中的计数特定文档部分。
估算文档数量
以下代码示例展示了如何检索集合中文档数量的估算值
$result = $collection->estimatedDocumentCount(); echo 'Estimated number of documents: ', $result;
要了解更多关于estimatedDocumentCount()
方法的信息,请参阅《计数文档指南》中的检索估算数量部分。
检索唯一值
以下代码示例展示了如何检索符合特定条件的文档字段的唯一值
$results = $collection->distinct('year'); foreach ($results as $value) { echo json_encode($value), PHP_EOL; }
要了解有关 distinct()
方法的更多信息,请参阅检索唯一字段值指南。
监控数据变化
以下代码展示了如何监控和打印集合的变化
$changeStream = $collection->watch(); for ($changeStream->rewind(); true; $changeStream->next()) { if ( ! $changeStream->valid()) { continue; } $event = $changeStream->current(); echo toJSON($event), PHP_EOL; if ($event['operationType'] === 'invalidate') { break; } }
要了解有关 watch()
方法的更多信息,请参阅监控数据变化指南。