从 MongoDB 读取数据
Overview
在此页面上,您可以查看可复制的代码示例,这些示例显示了用于检索文档的常见PHP库方法。
提示
要了解有关此页面上显示的任何方法的更多信息,请参阅每个部分中提供的链接。
要使用本页中的示例,请将代码示例复制到示例应用程序或您自己的应用程序中。 确保设立MONGODB_URI
环境变量设置为 部署的连接string 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()
方法的更多信息,请参阅 计数文档指南中的检索估计计数部分。
Retrieve Distinct Values
以下代码演示如何检索符合指定条件的文档的字段唯一值:
$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()
方法的更多信息,请参阅《监控数据更改》指南。