`

php操作mongo

阅读更多
本文章根据:
http://us.php.net/manual/en/class.mongocollection.php
http://www.cnblogs.com/xffy1028/archive/2011/12/03/2272837.html
整理,及平时学习所得
什么是mongoDB
  • MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • MongoDB将数据储存在文档中。
  • MongoDB有良好的PHP支持。

mongo 的 安装请看这里:http://wrj913.iteye.com/admin/blogs/1695546

关于查询MongoDB一些使用函数可以查询手册http://us.php.net/manual/en/class.mongocollection.php

建立一个文档:
{
   "_id": ObjectId,
   "i": NumberInt
}


$connection = new Mongo("mongodb://用户名:密码@数据库地址/数据库");  //创建链接
$db = $connection->test; //选择数据库
$collection = $db->wrj;  //选择数据表

$db->wrj->remove(array('i' => array("\$gt" => 20)));
$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")
);

$collection->insert( $doc ); //插入数据

$obj = $collection->findOne();
var_dump( $obj );

批量插入数据
for($i=0; $i<100; $i++) {
    $collection->insert( array( "i" => $i ) );
}

//打印插入数量
echo $collection->count();

//查询所有数据
$cursor = $collection->find();
foreach ($cursor as $id => $value) {
    echo "$id: ";
    var_dump( $value );
}


//查询
$query = array( "i" => 71 );
$cursor = $collection->find( $query );

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

$query = array( '$or'=>array(array("i" =>array("\$gt" => 20, "\$lte" => 30)),array("i" => 70)));
$cursor = $collection->find( $query );

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


这里有sql语句与mongo的对比:http://us.php.net/manual/en/mongo.sqltomongo.php;方便大家浏览我切了一张图



mongo的操作

MongoDB的好处挺多的,比如多列索引,查询时可以用一些统计函数,支持多条件查询,但是目前多表查询是不支持的,可以想办法通过数据冗余来解决多表查询的问题。

MongoDB对数据的操作很丰富,下面做一些举例说明,内容大部分来自官方文档,另外有部分为自己理解。



查询colls所有数据

db.colls.find() //select * from colls

通过指定条件查询

db.colls.find({‘last_name’: ‘Smith’});//select * from colls where last_name=’Smith’

指定多条件查询

db.colls.find( { x : 3, y : “foo” } );//select * from colls where x=3 and y=’foo’



指定条件范围查询

db.colls.find({j: {$ne: 3}, k: {$gt: 10} });//select * from colls where j!=3 and k>10



查询不包括某内容

db.colls.find({}, {a:0});//查询除a为0外的所有数据



支持<, <=, >, >=查询,需用符号替代分别为$lt,$lte,$gt,$gte

db.colls.find({ “field” : { $gt: value } } );

db.colls.find({ “field” : { $lt: value } } );

db.colls.find({ “field” : { $gte: value } } );

db.colls.find({ “field” : { $lte: value } } );



也可对某一字段做范围查询

db.colls.find({ “field” : { $gt: value1, $lt: value2 } } );



不等于查询用字符$ne

db.colls.find( { x : { $ne : 3 } } );



in查询用字符$in

db.colls.find( { “field” : { $in : array } } );

db.colls.find({j:{$in: [2,4,6]}});



not in查询用字符$nin

db.colls.find({j:{$nin: [2,4,6]}});



取模查询用字符$mod

db.colls.find( { a : { $mod : [ 10 , 1 ] } } )// where a % 10 == 1



$all查询

db.colls.find( { a: { $all: [ 2, 3 ] } } );//指定a满足数组中任意值时



$size查询

db.colls.find( { a : { $size: 1 } } );//对对象的数量查询,此查询查询a的子对象数目为1的记录



$exists查询

db.colls.find( { a : { $exists : true } } ); // 存在a对象的数据

db.colls.find( { a : { $exists : false } } ); // 不存在a对象的数据



$type查询$type值为bsonhttp://bsonspec.org/数 据的类型值

db.colls.find( { a : { $type : 2 } } ); // 匹配a为string类型数据

db.colls.find( { a : { $type : 16 } } ); // 匹配a为int类型数据



使用正则表达式匹配

db.colls.find( { name : /acme.*corp/i } );//类似于SQL中like



内嵌对象查询

db.colls.find( { “author.name” : “joe” } );



1.3.3版本及更高版本包含$not查询

db.colls.find( { name : { $not : /acme.*corp/i } } );

db.colls.find( { a : { $not : { $mod : [ 10 , 1 ] } } } );



sort()排序

db.colls.find().sort( { ts : -1 } );//1为升序2为降序



limit()对限制查询数据返回个数

db.colls.find().limit(10)



skip()跳过某些数据

db.colls.find().skip(10)



snapshot()快照保证没有重复数据返回或对象丢失



count()统计查询对象个数

db.students.find({‘address.state’ : ‘CA’}).count();//效率较高

db.students.find({‘address.state’ : ‘CA’}).toArray().length;//效率很低



group()对查询结果分组和SQL中group by函数类似

distinct()返回不重复值


  • 大小: 154.4 KB
分享到:
评论

相关推荐

    PHP扩展mongo 5.4.3

    Mongo是一款用于PHP开发的NoSQL数据库,php_mongo.dll是可以由PHP操作mongoDB数据库,便于在windows下开发学习,适合于5.4.3版本的64位的windows.

    PHP实现的MongoDB数据库操作类.zip

    介绍了PHP实现的MongoDB数据库操作类分享,模板mysql版的操作类,支持传入多个mongo_server(1.一个出问题时连接其它的server 2.自动将查询均匀分发到不同server),创建索引:如索引已存在,则返回。

    Mongo+php评论系统.zip

    操作系统:LInux、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信...

    mongo-php:这是一套实例代码,主要分享php基于mongo扩展操作MongoDB源代码

    这是一套实例代码,主要分享php基于mongo扩展操作MongoDB源代码。 此原始码用到的方法有: MongoClient 选择数据库 selectCollection createCollection 插入 找 找一个 更新 消除 救 限制 跳过 种类 测试代码...

    php对mongodb的扩展(小试牛刀)

    好了废话不多说,今天主要说一下php连接、操作mongodb,如果你没有看上两期的内容,不知道如何安装php对mongodb的扩展的话请您返回去看《php对mongodb的扩展(初识如故) 》和《php对mongodb的扩展(初出茅庐)》 。 php...

    PHP操作MongoDB 数据库总结记录

    近有个项目,需要用php操作mongoDb数据,所以了解下mongoDb为此整理了下,常见的操作……  1.连接MongoDB数据库   $conn = new Mongo(); 其他链接方式 //$conn=new Mongo(); #连接本地主机...

    PHP and MongoDB Web Development

    PHP语言对MongoDB进行操作,用于Web开发,高清文字版,前端开发有用

    rubyPHP高性能的PHP框架

    sql缓存指之前执行过的查询sql语句以及他的结果缓存在内存中,在一段时间内用相同的sql语句执行查询操作时不经过数据库直接返回内存中数据。rubyPHP使用Redis以键值方式缓存sql语句以及他的对应结果。rubyPHP能够在...

    Mongodb文档 与 php操作

    mongo mongodb nosql 数据库 bson

    mongo-php-library:MongoDB PHP库

    MongoDB PHP库 该库提供了有关较低级( mongodb扩展)的高级抽象。 虽然扩展提供了用于执行命令,查询和写入操作的有限API,但该库实现的API与的API类似。 它包含客户端,数据库和集合对象的抽象,并提供用于CRUD...

    PHP mongodb扩展线程安全64位

    PHP的mongodb扩展。用以支持PHP里中操作mongodb。版本为线程安全、VC14、64位版。

    php mongodb操作类 带几个简单的例子

    主要介绍了php mongodb操作类 带几个简单的例子,需要的朋友可以参考下

    php+mvc+mongodb数据库基本操作

    里面包括了php的mvc结构,还有mongo操作类,还提供了mongo数据库文件mongodb-win32-i386-1.8.1,安装后直接可以使用mvc架构,方便快捷,易扩展

    PHP中MongoDB数据库的连接、添加、修改、查询、删除等操作实例

    表标PHP已经自带了mongo功能,你就可以操作下面的代码(但是你必须有安装mongodb服务器) 一、连接数据库 使用下面的代码创建一个数据库链接 代码如下:&lt;?php $connection = new Mongo(mongodb://192.168.1.5:...

    PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】

    本文实例讲述了PHP操作MongoDB实现增删改查功能。分享给大家供大家参考,具体如下: MongoDB的PHP驱动提供了一些核心类来操作MongoDB,总的来说MongoDB命令行中有的功能,它都可以实现,而且参数的格式基本相似。...

    Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】

    本文实例讲述了Windows上php5.6操作mongodb数据库的方法。分享给大家供大家参考,具体如下: 一、配置 针对不同线程安全、VC版本的 PHP 发行版,可从 PECL 获取到预编译的二进制文件。 解压,并把 php_mongo.dll 放...

    phpStudy 2014 (php环境集成包) ,绿色版

    php_mongo 1.4.5 (MongoDB扩展) php_dbase 5.1.0 (dbase扩展) php_dbx 1.1.2 (dbx扩展) php_ibm_db2 1.9.5 (ibm_db2扩展) php_apc 3.1.13 (php_apc扩展) php_memcache 3.0.8 phpStudy Ftp server (FTPServ)...

    PHP简单操作MongoDB的方法(安装及增删改查)

    php操作MongoDB的话首先从网上下载MongoDB的扩展包,https://github.com/mongodb/mongo-php-driver/downloads,选择对应的扩展包。 这是我下的,然后解压,VC6适合apache,VC9适合IIS,ts(thread safe)指PHP以...

    PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】

    本文实例讲述了PHP mongodb操作类定义与用法。分享给大家供大家参考,具体如下: 在别人基础上修改的mongodb操作类,适合mongodb2.x和mongodb3.x &lt;?php /*** Mongodb类** examples: * $mongo = new HMongodb(...

    PHP操作Mongodb封装类完整实例

    本文实例讲述了PHP操作Mongodb封装类。分享给大家供大家参考,具体如下: &lt;?php /** * Mongodb 基本操作API,支持基本类似关系统型数据库的操作接口 * * @version 1.0 * [说明] * * 1:该版本API实现了 ...

Global site tag (gtag.js) - Google Analytics