PHP 如何连接 MongoDB
很多做网站的朋友,都会遇到需要把数据存在MongoDB里的情况——毕竟它灵活存大量非结构化数据,比传统数据库省心。但用PHP开发的话,怎么把这两个工具连起来呢?别担心,其实步骤不算复杂,咱们一步步说清楚,还举些生活化的例子帮你理解。
先准备好“工具”:安装必要的组件
要让PHP认出MongoDB,得先给PHP装个“翻译插件”,也就是MongoDB的PHP扩展。就像你要和外国朋友聊天,得先学人家的语言才行。

怎么装呢?如果是用Composer(PHP常用的包管理工具,类似手机的应用商店),直接在项目文件夹里打开命令行,输composer require mongodb/mongodb就行。要是服务器没有Composer,也可以去MongoDB官网对应PHP版本的扩展包,像给PHP装个“外挂”,装完就能和MongoDB对接了。这一步是基础,没装的话后面怎么连都白搭。
正式连接:用代码建立“对话通道”
装完扩展,就可以写PHP代码连MongoDB了。就好比你要去朋友家做客,得先找到朋友家的地址——这里的“地址”就是MongoDB的连接地址。
常用的连接代码是这样的:先写$client = new MongoDB\Client("mongodb://localhost:27017");。这里的localhost就是你自己电脑或服务器上MongoDB的地址,27017是MongoDB默认的“门牌号”端口,就像你去朋友家找对门牌号,不然进不去。要是MongoDB有账号密码,比如别人给你设了访问权限,就把地址改成mongodb://账号:密码@localhost:27017,相当于报对暗号才能进门。
这时候可以加个小测试,比如输var_dump($client);,要是没报错,说明连接成功了——就像敲门后朋友开了门,你们能正常说话了。
拿数据:从MongoDB“取快递”
连上之后,肯定是要拿数据用的,比如你做个电商网站,要拿用户的信息。这时候得先找对应的“柜子”,也就是MongoDB里的数据库和集合(类似传统数据库的表)。
比如你要找“test”这个数据库里“users”这个集合,代码就是$collection = $client->test->users;,这里的test是数据库名,users是集合名,就像你去快递站,先找对应小区的柜子,再找对应编号的格子。
要是想拿所有用户数据,用$cursor = $collection->find();,然后循环输出就行——比如foreach ($cursor as $user) { echo $user['name']; },就像你打开快递格子,把里面的包裹(数据)拿出来看。要是想找特定数据,比如找叫“张三”的用户,就加个条件:$collection->find(['name' => '张三']);,相当于直接报快递单号找包裹,不用翻所有格子。
存数据:把新内容“寄”到MongoDB
除了取,还要存新数据,比如你注册新用户,要把信息存到MongoDB里。这就像你要寄新快递到快递站,填好地址和包裹内容就行。
代码用$collection->insertOne(['name' => '李四', 'email' => 'lisi@example.com']);,这里的insertOne是存一条数据,就像寄一个普通包裹。要是批量存多个用户,用insertMany,一次寄好几个包裹,省事儿。
最后提个小提醒:要是用的是远程MongoDB(不是自己电脑上的),得确认服务器的27017端口没被防火墙挡住,就像快递站的门被锁了,你得先开门才能寄取包裹。另外,操作完数据后,不用特意“断开连接”——这个扩展会自动管理,不用你操心。
这样一步步下来,从装扩展到连、取、存,就把PHP和MongoDB的连接搞定了,是不是比想象中简单?