文档菜单
文档首页
/ / /
PHP 库手册

从 MongoDB 读取数据

本页内容

  • 概述
  • 示例应用
  • 查找单个
  • 查找多个
  • 计数集合中的文档
  • 查询返回的文档计数
  • 估计文档计数
  • 检索不同的值
  • 监控数据更改

在本页中,您可以查看可复制的代码示例,展示常见的PHP库方法来检索文档。

提示

要了解更多关于本页上显示的任何方法,请参阅每个部分提供的链接。

要使用本页上的示例,请将代码示例复制到示例应用程序或您自己的应用程序中。请确保将环境变量MONGODB_URI设置为您MongoDB部署的连接字符串,并用您目标命名空间中的值替换<database><collection>占位符。

您可以使用以下示例应用程序来测试本页上的代码示例。要使用示例应用程序,请执行以下步骤

  1. 确保您的项目中已安装MongoDB PHP库。有关安装MongoDB PHP库的更多信息,请参阅下载和安装指南。

  2. 复制以下代码并将其粘贴到新的.php文件中。

  3. 将此页上的代码示例复制并粘贴到文件中的指定行。

1<?php
2
3require __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() 方法的更多信息,请参阅监控数据变化指南。

返回

时间序列