文档章节

php中mongoDB数据库扩展函数

durban
 durban
发布于 2012/06/03 19:31
字数 889
阅读 256
收藏 1

1:首先需要去安装对应版本的mongoDB php扩展dll文件,开扩展,重启apache

这个可以去php官网找找,可以去php手册看看mongoDB函数,里面安装和函数使用的介绍,

2:

Mongo 配置选项 
名字                                  默认                       可修改范围                    描述
mongo.default_host         "localhost"                PHP_INI_ALL 
mongo.default_port          27017                      PHP_INI_ALL                 默认连接端口
mongo.auto_reconnect    true                          PHP_INI_SYSTEM         是否在丢失连接的时候重新连接
mongo.allow_persistent   true                          PHP_INI_SYSTEM          是否支持持久连接
mongo.chunk_size          262144                     PHP_INI_SYSTEM          每块的大小,至少100bytes,最大4 megabytes 
mongo.cmd                    "$"                              PHP_INI_ALL                 在非同一类型比较时代替$
mongo.utf8                     "1"                              PHP_INI_ALL                1.1.0版本后此选项将淘汰
一般连接

$connection = new Mongo(); // connects to localhost:27017
$connection = new Mongo( "example.com" ); 
$connection = new Mongo( "example.com:65432" );
$connection ->close();关闭连接


给库添加账号密码验证
$m = new Mongo();
$db = $m->admin;
$db->authenticate($username, $password);


其它连接方式
$m = new Mongo("mongodb://${username}:${password}@localhost:port");
//默认端口连上blog库
$m = new Mongo("mongodb://${username}:${password}@localhost/blog");
//连接到mongo和其副本上
$m = new Mongo("mongodb://localhost:27017,localhost:27018");


长连接,如下:x为任意标示字符,
$m = new Mongo("localhost:27017", array("persist" => "x"));


1000次短连接耗时18s,而长连接,只需要0.02秒,
socket连接方式,这个我没试验成功,应该只针对linux
$m = new Mongo("mongodb:///tmp/mongo-27017.sock");
$m = new Mongo("mongodb://username:password@/tmp/mongo-27017.sock:0/foo");

2:选着数据库

$db = $connection->dbname;//如果库不存在,会自己建立一个


3:选择collection
$collection = $db->foobar;//两种方法,如下。同理,不存在的话会新建
$collection = $connection->baz->foobar;


4:添加数据
$data = array("name" => "lxh","info" => "lxh info");
$collection->insert($data);  采用关联数组,


5:查找数据
$result = $collection->findOne(); //查找一条
$cursor = $collection->find(); //查找所有


他们都可以带参数,参数为关联数组,如下:
$query = array( "i" => 71 ); //多个条件,在数组中添加即可
$cursor = $collection->find( $query );


6:条件编写
多个条件,在数组中添加即可
$query = array( "i" => 71,"name" => "lxh" );


不等条件,大于,小于,大于等于,小于等于

$query = array( "id" => array( '$gt' => 50 ) );//查找id大于50的数据
$query = array(
"i" => array( "\$gt" => 20, "\$lte" => 30 )
); 
//20 < i <= 30   大于等于估计用"\$gte"了,猜一下
$cursor = $coll->find( $query );


为躲避$,我们可以在php.ini中设定  mongo.cmd = ":" 用:代替$
7:计数

echo $collection->count();


8:遍历结果
$cursor = $collection->find( $query );
//遍历结果,或用简单的遍历数组的方法
while( $cursor->hasNext() ) {  
var_dump( $cursor->getNext() );
}


9:创建索引
$collection->ensureIndex( array( "i" => 1 ) );  //i递增索引
$collection->ensureIndex( array( "i" => -1, "j" => 1 ) );  
// i递减索引,j递增索引


10:其它
利用添加返回的"_id"
$person = array("name" => "joe");
$people->insert($person);
$joe = $people->findOne(array("_id" => $person['_id']));


_id是mongoid。最常见的错误是attepting使用一个字符串匹配mongoid
$person = array("name" => "joe");
$people->insert($person);
$pid = $person['_id'] . "";
// 这样做是错误的
$joe = $people->findOne(array("_id" => $pid));

//保存

$collection->save(array("awards" => array("gold", "silver", "bronze")));


awards列,保存一个数组{ "_id" : ObjectId("4b06c282edb87a281e09dad9"), "awards" : ["gold", "silver", "bronze"]}
忽视awards是数组,条件查询
$cursor = $collection->find(array("awards" => "gold"));



"_id" : ObjectId("4b06c282edb87a281e09dad9"), 
"awards" : 
[
{
"first place" : "gold"
},
{
"second place" : "silver" 
},
{
"third place" :  "bronze"
}
]
}

如果是此类,查询如下:

$cursor = $collection->find(array("awards.first place" => "gold"));
//in 查询 gold or copper
$cursor = $collection->find(array("awards" => array('$in' => array("gold", "copper"))));
$collection->save( array("gold", "silver", "bronze"));


0列silver,1列 bronze

修改

$collection->update(
array("name" => "dfd"),  //修改查询条件
array('$set' => array('sex' => "aim")),
array('multiple'=>true)  //更改多行,否则只改一行
);



"_id" : ObjectId("4b06c282edb87a281e09dad9"), 
"content" : "this is a blog post.",
"comments" : 
[
{
"author" : "Mike",
"comment" : "I think that blah blah blah...",
},
{
"author" : "John",
"comment" : "I disagree."
}
]
}
//知道索引
$blog->update($criteria, array('$set' => array("comments.1" => array("author" => "Jim"))));
//如果不知道 索引,可以用$代替
$blog->update(
array("comments.author" => "John"), 
array('$set' => array('comments.$.author' => "Jim")));

本文转载自:http://hi.baidu.com/heyubingfeng/item/a318e20f29291e8e03ce1ba5

上一篇: PHP MongoDB入门
下一篇: php---Mongodb类
durban
粉丝 101
博文 567
码字总数 184197
作品 0
崇明
后端工程师
私信 提问
mongodb创建集合、数据管理、PHP的mongodb扩展、21.32 PHP的mongo扩展

mongodb创建集合、数据管理 创建集合 说明: 前面创建了test1用户,test1用户对db1库读写,对db2只读. 之所以先创建db1库,表示用户在db1库中创建,就一定要db1库验证身份,即用户的信息跟随数...

Linux_Anna
2017/10/20
33
0
Yum安装MongoDB及数据库管理

MongoDB简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB旨在为WEB应用提供可扩展的高性能数据...

cchenyz
2018/07/13
0
0
82.mongodb语句 两种扩展

21.30 mongodb创建集合、数据管理(删除查找等等) 21.31 php的mongodb.so扩展 (两种扩展的不同) 21.32 php的mongo扩展 扩展内容 mongodb安全设置 http://www.mongoing.com/archives/631 m...

axin-linux
04/01
12
0
Linux环境下将log4j的日志存储到mongoDB

单位有很多java项目,一般上生产的项目日志都是通过log4j打印在本地,平常开发同学要查看日志还要给他们开个专门的FTP,不利于集中维护管理,近日因工作需要,在网上看到相关技术资料,可把l...

基督山伯爵
2013/03/04
5.6K
3
探索 MongoDB

在本文中,您将了解 MongoDB ,这是一个开放源码、面向文档的数据库,使用 C++ 语言编写,它的特点是能够在生产环境随意扩展数据库。探索面向文档的数据库相比传统关系型数据库管理系统 (RDB...

IBMdW
2011/09/01
3.2K
3

没有更多内容

加载失败,请刷新页面

加载更多

总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
48分钟前
4
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
52分钟前
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0
JAVA 利用时间戳来判断TOKEN是否过期

import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;/** * @descri......

huangkejie
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部