转自:http://blog.sina.com.cn/s/blog_6324c2380100ux2m.html

MongoDB是最近比较流行的NoSQL数据库,网络上关于PHP操作MongoDB的资料太少了,大部分都是英文文档,于是蜗牛我用蹩脚的英语为大家翻译一下来自PHP官方的文档,水平有限请多多见谅

链接数据库 使用下面的代码创建一个数据库链接

<?php $connection = new Mongo(); //链接到 localhost:27017 $connection = new Mongo( "example.com" ); //链接到远程主机(默认端口) $connection = new Mongo( "example.com:65432" ); //链接到远程主机的自定义的端口 ?>

现在你可以使用$connection链接来操作数据库了

选择数据库 使用下面的代码来选择一个数据库

<?php $db = $connection->dbname; ?>

这里的数据库并不一定是一个已经存在的数据库,如果所选择的数据库不存在,则会新建一个数据库,所以在选择数据库的时候,注意一定要填上正确的数据库名 如果拼写错误的话,很有可能会新建一个数据库

<?php $db = $connection->mybiglongdbname; //做一些事情 $db = $connection->mybiglongdbnme; //现在会连上一个新的数据库 ?>

获取一个集合 获取一个集合跟选择数据库拥有相同的语法格式

<?php $db = $connection->baz;//选择数据库 $collection = $db->foobar;//选择foobar集合 //或者使用更简洁的方式 $collection = $connection->baz->foobar; ?>

插入一个文档 多维数组是可以被储存到数据库中的基本单元 一个随机的文档可能是这样 <?php

$doc = array( ”name” => “MongoDB”,     “type” => “database”,     “count” => 1,     “info” => (object)array( “x” => 203,     “y” => 102),     “versions” => array(“0.9.7″, “0.9.8″, “0.9.9″) ); ?> 注意:你可以嵌套数组与对象,对象与文档在mongodb中几乎是一样的,你可以使用$doc调用一个文档或对象,但是info字段总是一个对象而不是一个文档, 本约束适用于所有文档

使用MongoCollection::insert()插入一个文档 <?php $m = new Mongo(); $collection = $m->foo->bar; $collection->insert($doc); ?>

使用MongoCollection::findOne()查询文档 为了证明上面那段代码的数据已经插入到数据库里了,我们进行简单的 findOne()操作以得到集合中的第一个文档数据,这种方法只返回一个文档数据, 这种方法适用于在你的查询语句的时候只匹配一个文档或者你只关心第一条数据

<?php $obj = $collection->findOne(); var_dump( $obj ); ?> 你会看到下列结果 array(5) {   ["_id"]=>   object(MongoId)#6 (0) {   }   ["name"]   string(7) “MongoDB”   ["type"]=>   string(8) “database”   ["count"]=>   int(1)   ["info"]=>   array (2) {     ["x"]=>     int(203)     ["y"]=>     int(102)   }   ["versions"]   array(3) {     [0]=>     string(5) “0.9.7″     [1]=>     string(5) “0.9.8″     [2]=>     string(5) “0.9.9″   } }

注意_id字段自动加载了文档上,MongoDB储存元素中以_以及$开头的都是供内部使用的

添加更多文档 为了做一些更有趣的事情,我们添加更多简单的文档到集合中,这些文档如下 <?php array( “i” => value ); ?>

我们可以使用循环相当有效的插入数据 <?php for($i=0; $i<100; $i++) {     $collection->insert( array( “i” => $i ) ); } ?> 注意:我们可以插入不同的字段在同一字符集中,在这方面意味着MongoDB拥有非常自由的储存模式

在一个集合中计算文档的数量 现在我们插入了101个文档(我们用循环插入了100个,之前还插入了一个),我们可以使用count()来看看我们的数据是不是都被插入进去了 <?php echo $collection->count(); ?> 这段代码将打印出101 MongoCollection::count() 也可以查询字段数据

使用游标得到集合中的所有文档 为了得到集合中的所有文档,我们可以使用 MongoCollection::find()方法,find()方法返回一个 MongoCursor对象,可以让我们重复得到查询 所匹配的的文档 <?php $cursor = $collection->find(); foreach ($cursor as $id => $value) {     echo “$id: “;     var_dump( $value ); } ?> 这样我们会打印出集合中的这101个文档,$id就是文档中的_id字段,$value 就是文档本身

为查询规定一个标准 我们可以通过find()方法得到集合中的文档子集,例如,我们要查询出集合中i字段为71的文档,我们可以使用下列方法 <?php

$query = array( “i” => 71 ); $cursor = $collection->find( $query ); while( $cursor->hasNext() ) {     var_dump( $cursor->getNext() ); } ?> 我们将打印如下数据 array(2) {   ["_id"]=>   object(MongoId)#6 (0) {   }   ["i"]=>   int(71)   ["_ns"]=>   “testCollection” } 为查询设定一个范围 我们可以通过find()创建一个查询语句以得集合中的一个子集,例如如果我们得到所有”i”>50的文档,我们可以使用如下代码 <?php $query = array( “i” => array(‘$gt’ =>50)); //注意’$gt’两边的单引号 $cursor = $coll->find( $query );

while( $cursor->hasNext() ) {     var_dump( $cursor->getNext() ); } ?> 我们同样可以得到20 < i <= 30之间的数据 <?php $query = array( “i” => array( “\$gt” => 20, “\$lte” => 30 ) ); $cursor = $coll->find( $query );

while( $cursor->hasNext() ) {     var_dump( $cursor->getNext() ); } ?>

我们非常容易漏掉$美元符号,你也可以选择你自定义的符号来代替美元符号,选择一个不会在你的建里面出现的符号例如”:”,在php.ini中加上这么一句话 mongo.cmd = “:” 那么上面的代码就可以替换成 <?php $query = array( “i” => array( “:gt” => 20, “:lte” => 30 ) ); ?> 当然你也可以使用ini_set(“mongo.cmd”, “:”)的方法来改变

创建一个索引 MongoDB支持索引,并且可以很容易的加到一个集合中,你只要指定某个字段为索引就行了,并且还可以指定 正序索引(1)与倒序索引(-1) 下面的代码为I创建了索引 <?php $coll->ensureIndex( array( “i” => 1 ) );  //在”i”上创建了一个索引 $coll->ensureIndex( array( “i” => -1, “j” => 1 ) );//在”i”上创建了倒序索引 在”j”上创建了正序索引 ?>

一个简单的列子 这个例子展示了如何链接mongodb数据库,如何选择数据库,如何插入数据,如何查询数据,以及关闭数据库链接

<?php //链接 $m = new Mongo();
// 选择一个数据库 $db = $m->comedy; $collection = $db->cartoons;
//添加一个元素 $obj = array( "title" => "Calvin and Hobbes", "author" => "Bill Watterson" ); $collection->insert($obj);
//添加另一个元素,使用不同的格式 $obj = array( "title" => "XKCD", "online" => true ); $collection->insert($obj);
//查询所有的集合 $cursor = $collection->find();
//重复显示结果 foreach ($cursor as $obj) {     echo $obj["title"] . "\n"; }
// 关闭链接 $m->close(); ?>

输出结果为 Calvin and Hobbes XKCD

PHP操作MongoDB简明教程(转)的更多相关文章

  1. 使用Python脚本操作MongoDB的教程

    Reference:  http://www.jb51.net/article/64225.htm

  2. Python 操作 MongoDB

    原文 这篇文章主要介绍了使用Python脚本操作MongoDB的教程,MongoDB作为非关系型数据库得到了很大的宣传力度,而市面上的教程一般都是讲解JavaScript的脚本操作,本文则是基于Pyt ...

  3. 【转】Python操作MongoDB

    Python 操作 MongoDB   请给作者点赞--> 原文链接 这篇文章主要介绍了使用Python脚本操作MongoDB的教程,MongoDB作为非关系型数据库得到了很大的宣传力度,而市面 ...

  4. ArcGIS Pro 简明教程(2)基础操作和简单制图

    ArcGIS Pro 简明教程(2)基础操作和简单制图 By 李远祥 本章主要介绍ArcGIS Pro如何加载数据并进行简单的地图制作,以基本的操作为主. 上一章节介绍过,ArcGIS Pro是可以直 ...

  5. MongoDB最简单的入门教程之四:使用Spring Boot操作MongoDB

    Spring Boot 是一个轻量级框架,可以完成基于 Spring 的应用程序的大部分配置工作.Spring Boot的目的是提供一组工具,以便快速构建容易配置的Spring应用程序,省去大量传统S ...

  6. 【MongoDB详细使用教程】四、python操作MongoDB

    目录 1.安装pymongo 2.连接数据库 3.操作数据库 3.1.查 3.2.增 3.3.改 3.4.删 使用第三方库pymongo来实现python对MongoDB的操作 pymongo官方文档 ...

  7. Python 简明教程 --- 25,Python 目录操作

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 做技术一定要一颗恒心,这样才不会半途而废. 目录 上一节我们介绍了文件相关的操作,本节我们来介绍目录 ...

  8. 2013 duilib入门简明教程 -- FAQ (19)

        虽然前面的教程几乎把所有的知识点都罗列了,但是有很多问题经常在群里出现,所以这里再次整理一下.     需要注意的是,在下面的问题中,除了加上XML属性外,主窗口必须继承自WindowImpl ...

  9. Mac安装Windows 10的简明教程

    每次在Mac上安装Windows都是一件非常痛苦的事情,曾经为了装Win8把整台Mac的硬盘数据都弄丢了,最后通过龟速系统恢复模式恢复了MacOSX(50M电信光纤下载了3天才把系统下载完),相信和我 ...

随机推荐

  1. 100%会用到的angularjs的知识点【新手可mark】

    前言:下面我将整理出100%会到的angularjs的知识点,掌握这些知识点你基本上就可以独立完成一个angularjs的项目,前提是你有一定web开发的经验:1.了解基本的javascript的概念 ...

  2. [Java] JAVA程序员您需要学习的25个标准

    (1) 你需要精通面向对象分析与设计(OOA/OOD).涉及模式(GOF,J2EEDP)以及综合模式.你应该了解UML,尤其是class,object,interaction以 及statediagr ...

  3. mongodb 安装为windows服务

    mongodb 安装为windows服务: 以管理员身份运行下面的命令: mongod --install --rest --dbpath e:\data\mongo --logpath e:\dat ...

  4. 使用手机模拟器与android操作系统

    创建手机模拟器: 1. 点击Eclipse中新增的按钮,打开"Android Virtual Device Manager"(不同版本的ADT可能打开路径不同),如下图: 2. 点 ...

  5. 新手不了解Xcode和mac系统可能犯得错误和我的建议

    我是学iOS刚入门的新手,本人装的时黑苹果,我是喜欢完美的人,但黑苹果又是不完美的系统,比如关不了机啊,和显卡驱动不了啊,当自己的电脑出现白屏和卡顿的时候气的没脾气.我是一个新手.开始学的时java但 ...

  6. 教您如何检查oracle死锁,决解死锁

    oracle死锁问题一直困扰着我们,下面就教您一个oracle死锁的检查方法,如果您之前遇到过oracle死锁方面的问题,不妨一看…… oracle死锁问题一直困扰着我们,下面就教您一个oracle死 ...

  7. CentOS 6.5_X64下安装MongoDB数据库

    1.下载MongoDB 官网下载地址:https://www.mongodb.org/downloads 具体链接:https://fastdl.mongodb.org/linux/mongodb-l ...

  8. Atom 下载、安装

    Atom工具的使用 由github发布的前端开发工具 非常强大的开发工具 官网下载地址:https://atom.io Atom的插件和主题安装和配置

  9. iOS10.1不能调试解决方案

    对于一些有强迫证的程序员来说只要苹果更新系统,会马上更新,但是军哥更新过10.1的系统后发现Xcode8不能调试了 苹果这次太不人性话了,解决办法,最简单的是 拷贝iOS10.1支持文件放在Xcode ...

  10. CSS Sprite 图标

    HTML <body> <!-- ul.sprite>li*5>s.s-icon+a{CSS Sprite} --> <!-- 以上是Sublime Text ...