本文章根据:
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
分享到:
相关推荐
Mongo是一款用于PHP开发的NoSQL数据库,php_mongo.dll是可以由PHP操作mongoDB数据库,便于在windows下开发学习,适合于5.4.3版本的64位的windows.
介绍了PHP实现的MongoDB数据库操作类分享,模板mysql版的操作类,支持传入多个mongo_server(1.一个出问题时连接其它的server 2.自动将查询均匀分发到不同server),创建索引:如索引已存在,则返回。
操作系统:LInux、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信...
这是一套实例代码,主要分享php基于mongo扩展操作MongoDB源代码。 此原始码用到的方法有: MongoClient 选择数据库 selectCollection createCollection 插入 找 找一个 更新 消除 救 限制 跳过 种类 测试代码...
好了废话不多说,今天主要说一下php连接、操作mongodb,如果你没有看上两期的内容,不知道如何安装php对mongodb的扩展的话请您返回去看《php对mongodb的扩展(初识如故) 》和《php对mongodb的扩展(初出茅庐)》 。 php...
近有个项目,需要用php操作mongoDb数据,所以了解下mongoDb为此整理了下,常见的操作…… 1.连接MongoDB数据库 $conn = new Mongo(); 其他链接方式 //$conn=new Mongo(); #连接本地主机...
PHP语言对MongoDB进行操作,用于Web开发,高清文字版,前端开发有用
sql缓存指之前执行过的查询sql语句以及他的结果缓存在内存中,在一段时间内用相同的sql语句执行查询操作时不经过数据库直接返回内存中数据。rubyPHP使用Redis以键值方式缓存sql语句以及他的对应结果。rubyPHP能够在...
mongo mongodb nosql 数据库 bson
MongoDB PHP库 该库提供了有关较低级( mongodb扩展)的高级抽象。 虽然扩展提供了用于执行命令,查询和写入操作的有限API,但该库实现的API与的API类似。 它包含客户端,数据库和集合对象的抽象,并提供用于CRUD...
PHP的mongodb扩展。用以支持PHP里中操作mongodb。版本为线程安全、VC14、64位版。
主要介绍了php mongodb操作类 带几个简单的例子,需要的朋友可以参考下
里面包括了php的mvc结构,还有mongo操作类,还提供了mongo数据库文件mongodb-win32-i386-1.8.1,安装后直接可以使用mvc架构,方便快捷,易扩展
表标PHP已经自带了mongo功能,你就可以操作下面的代码(但是你必须有安装mongodb服务器) 一、连接数据库 使用下面的代码创建一个数据库链接 代码如下:<?php $connection = new Mongo(mongodb://192.168.1.5:...
本文实例讲述了PHP操作MongoDB实现增删改查功能。分享给大家供大家参考,具体如下: MongoDB的PHP驱动提供了一些核心类来操作MongoDB,总的来说MongoDB命令行中有的功能,它都可以实现,而且参数的格式基本相似。...
本文实例讲述了Windows上php5.6操作mongodb数据库的方法。分享给大家供大家参考,具体如下: 一、配置 针对不同线程安全、VC版本的 PHP 发行版,可从 PECL 获取到预编译的二进制文件。 解压,并把 php_mongo.dll 放...
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的话首先从网上下载MongoDB的扩展包,https://github.com/mongodb/mongo-php-driver/downloads,选择对应的扩展包。 这是我下的,然后解压,VC6适合apache,VC9适合IIS,ts(thread safe)指PHP以...
本文实例讲述了PHP mongodb操作类定义与用法。分享给大家供大家参考,具体如下: 在别人基础上修改的mongodb操作类,适合mongodb2.x和mongodb3.x <?php /*** Mongodb类** examples: * $mongo = new HMongodb(...
本文实例讲述了PHP操作Mongodb封装类。分享给大家供大家参考,具体如下: <?php /** * Mongodb 基本操作API,支持基本类似关系统型数据库的操作接口 * * @version 1.0 * [说明] * * 1:该版本API实现了 ...