当前位置: 首页 > news >正文

三十四、MongoDB PHP

PHP 语言可是使用 mongo.so ( Windows 下是 mongo.dll ) 扩展访问 MongoDB 数据库

MongoDB PHP 在各平台上的安装及驱动包下载请查看: PHP 安装 MongoDB 扩展驱动

如果你使用的是 PHP7,请移步: PHP7 MongoDB 安装与使用

PHP 连接 MongoDB 和 选择一个数据库

为了确保正确连接,我们需要指定数据库名,如果数据库在 mongoDB 中不存在, mongoDB 会自动创建

<?php/** filename: main.php* author: 搜云库技术团队(tech.souyunku.com)* Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/$m = new MongoClient(); // 连接默认主机和端口为:mongodb://localhost:27017
$db = $m->souyunku;         // 切换到 "souyunku" 数据库

PHP MongoDB 创建集合

PHP MongoDB 创建创建集合可以使用下面的代码

<?php/** filename: main.php* author: 搜云库技术团队(tech.souyunku.com)* Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/$m          = new MongoClient();                // 连接
$db         = $m->souyunku;                         // 切换到 "souyunku" 数据库
$c_lession  = $db->createCollection("lession"); // 创建 lession 集合echo "集合创建成功\n";

运行以上 PHP 脚本,输出结果如下:

$ php main.php
集合创建成功

PHP MongoDB 插入文档

可以使用 insert() 方法向 lession 集合中插入文档

<?php/** filename: main.php* author: 搜云库技术团队(tech.souyunku.com)* Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/$m          = new MongoClient();                // 连接
$db         = $m->souyunku;                         // 切换到 "souyunku" 数据库
$collection = $db->lession;                     // 选择集合$document = array
( "title"     => "MongoDB 基础教程", "favorite"  => 1580000,"url"       => "https://tech.souyunku.com/l/penglei/mongodb/","by"        => "penglei"
);$collection->insert($document);echo "数据插入成功\n";

运行以上 PHP 脚本,输出结果如下:

$ php main.php 
数据插入成功

然后我们在 mongo 客户端使用 db.lession.find().pretty(); 命令查看数据

> db.lession.find().pretty()
{"_id" : ObjectId("59eee84c3f8c88a4f10041a7"),"title" : "MongoDB 基础教程","favorite" : NumberLong(1580000),"url" : "https://tech.souyunku.com/l/penglei/mongodb/","by" : "penglei"
}

PHP MongoDB 查找文档

可以使用 find() 方法查询 lession 集合中的文档

<?php/** filename: main.php* author: 搜云库技术团队(tech.souyunku.com)* Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/$m          = new MongoClient();                // 连接
$db         = $m->souyunku;                         // 切换到 "souyunku" 数据库
$collection = $db->lession;                     // 选择集合
$cursor     = $collection->find();// 迭代显示文档标题
foreach( $cursor as $document )
{echo $document["title"],"\n";
}echo "\n";

运行以上 PHP 脚本,输出结果如下:

$ php main.php
MongoDB 基础教程

PHP MongoDB 更新文档

可以使用 update() 方法来更新 lession 集合中的文档

<?php/** filename: main.php* author: 搜云库技术团队(tech.souyunku.com)* Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/$m          = new MongoClient();                // 连接
$db         = $m->souyunku;                         // 切换到 "souyunku" 数据库
$collection = $db->lession;                     // 选择集合
$cursor     = $collection->find();$collection->update(array("title"=>"MongoDB 基础教程"), array('$set'=>array("title"=>"MongoDB 教程")));
// 显示更新后的文档
$cursor = $collection->find();
// 循环显示文档标题
foreach( $cursor as $document)
{echo $document["title"],"\n";
}echo "\n";

运行以上 PHP 脚本,输出结果如下:

$ php main.php
MongoDB 教程

然后我们在 mongo 客户端使用 db.souyunku.find().pretty(); 命令查看数据:

![Image 1][]

PHP MongoDB 删除文档

可以使用 remove() 方法来删除 lession 集合中的文档

<?php/** filename: main.php* author: 搜云库技术团队(tech.souyunku.com)* Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/$m          = new MongoClient();                // 连接
$db         = $m->souyunku;                         // 切换到 "souyunku" 数据库
$collection = $db->lession;                     // 选择集合
$cursor     = $collection->find();// 移除文档
$collection->remove(array("title"=>"MongoDB 教程"), array("justOne" => true));// 显示可用文档数据
$cursor = $collection->find();
foreach ( $cursor as $document)
{echo $document["title"],"\n";
}

运行以上 PHP 脚本,输出结果如下:

$ php main.php

除了以上方法外,PHP MongoDB 扩展还有以下方法:

1、 findOne()
2、 save()
3、 limit()
4、 skip()
5、 sort()

延伸阅读

更多的操作方法可以参考 PHP MongoDB 扩展 http://docs.php.net/set.mongodb

http://www.lryc.cn/news/36382.html

相关文章:

  • 浅拷贝和深拷贝的区别
  • 6个常用Pycharm插件推荐,老手100%都用过
  • TCP的11种状态
  • new 指令简单过程 / 类加载简单过程初始化
  • Asan基本原理及试用
  • 深度学习应用技巧4-模型融合:投票法、加权平均法、集成模型法
  • 【并发编程】深入理解Java内存模型及相关面试题
  • C++编程语言STL之queue介绍
  • ACO优化蚁群算法
  • SwiftUI 常用组件和属性(SwiftUI初学笔记)
  • Centos 中设置代理的两种方法
  • 高速PCB设计指南系列(一)
  • 云端IDE:TitanIDE v2.6.0 正式发布
  • 【Python】tqdm 模块
  • 论文阅读:Adversarial Cross-Modal Retrieval对抗式跨模式检索
  • 计算机网络复习
  • unity动画--动画绑定,转换,用脚本触发
  • 车载汽车充气泵PCBA方案
  • Android 连接 MySQL 数据库教程
  • tmall.item.update.schema.get( 天猫编辑商品规则获取 )
  • Leetcode 2379. 得到 K 个黑块的最少涂色次数
  • [深入理解SSD系列 闪存实战2.1.3] 固态硬盘闪存的物理学原理_NAND Flash 的读、写、擦工作原理
  • 总结:Linux内核相关
  • flutter工程创建过程中遇到一些问题。
  • 记录实现操作系统互斥锁的一次思考
  • 计算机SCI期刊的分值是什么意思? - 易智编译EaseEditing
  • 5MW风电永磁直驱发电机-1200V直流并网MATLAB仿真模型
  • 10 个常见的 JavaScript 面试问题以及如何回答它们
  • 字节跳动-今日头条后端开发一面面经
  • 再见 ETHDenver 2023