PHP mongodb操作
22242 ワード
<?php
/**
* PHP MongoDB
*/
//*************************
//** MongoDB **//
//*************************
// =>(“mongodb:// : @ : / ”, )
$conn = new Mongo();
//
//$conn=new Mongo(); # , .
//$conn=new Mongo(“172.21.15.69″); #
//$conn=new Mongo(“xiaocai.loc:10086″); #
//$conn=new Mongo(“xiaocai.loc”,array(“replicaSet”=>true)); #
//$conn=new Mongo(“xiaocai.loc”,array(“persist”=>”t”)); #
//$conn=new Mongo(“mongodb://sa:123@localhost”); #
//$conn=new Mongo(“mongodb://localhost:27017,localhost:27018″); #
//$conn=new Mongo(“mongodb:///tmp/mongo-27017.sock”); #
//$conn=new Mongo(“mongodb://admin_miss:miss@localhost:27017/test”,array(‘persist’=>’p',”replicaSet”=>true)); #
// :http://www.php.net/manual/en/mongo.connecting.php
//*************************
//** **//
//*************************
$db=$conn->mydb; # mydb
//$db=$conn->selectDB(“mydb”); #
$collection=$db->column; # ( ’ ’)
//$collection=$db->selectCollection(‘column’); #
//$collection=$conn->mydb->column; #
// :1. , .
// 2. , ( ).
//*************************
//** **//
//*************************
//** , bool . **/
$array=array(‘column_name’=>’col’.rand(100,999),’column_exp’=>’xiaocai’);
$result=$collection->insert($array); #
echo “ ID:”.$array['_id']; #MongoDB
var_dump($result); # :bool(true)
//** , ( ). **/
$array=array(‘column_name’=>’col’.rand(100,999),’column_exp’=>’xiaocai2′);
$result=$collection->insert($array,true); # MongoDB , .( )
echo “ ID:”.$array['_id']; #MongoDB
var_dump($result); # :array(3) { ["err"]=> NULL ["n"]=> int(0) ["ok"]=> float(1) }
//** **/
#insert($array,array(‘safe’=>false,’fsync’=>false,’timeout’=>10000))
/*
* *
* :insert ( array $a [, array $options = array() ] )
* insert(array(),array(‘safe’=>false,’fsync’=>false,’timeout’=>10000))
* :safe: false,
* fsync: false,
* timeout: ( )
*
* :{ “_id” : ObjectId(“4d63552ad549a02c01000009″), “column_name” : “col770″, “column_exp” : “xiaocai” }
* ’_id’ , MongoDB .
*
* :1. ( _id), 。
* $collection->insert(array(‘column_name’=>’xiaocai’));
* $collection->insert(array(‘column_name’=>’xiaocai’));
*
* $collection->insert(array(‘column_name’=>’xiaocai’),true);
* try {
* $collection->insert(array(‘column_name’=>’xiaocai’),true);
* }catch(MongoCursorException $e){
* echo “Can’t save the same person twice!
”;
* }
*
* :http://www.php.net/manual/zh/mongocollection.insert.php
* *
*/
//*************************
//** **//
//*************************
//** **/
$where=array(‘column_name’=>’col123′);
$newdata=array(‘column_exp’=>’GGGGGGG’,'column_fid’=>444);
$result=$collection->update($where,array(‘$set’=>$newdata)); #$set: , $pull $pullAll $pop $inc,
/*
* :
*
* {“_id”:ObjectId(“4d635ba2d549a02801000003″),”column_name”:”col123″,”column_exp”:”xiaocai”}
*
* {“_id”:ObjectId(“4d635ba2d549a02801000003″),”column_name”:”col123″,”column_exp”:”GGGGGGG”,”column_fid”:444}
*/
//** **/
$where=array(‘column_name’=>’col709′);
$newdata=array(‘column_exp’=>’HHHHHHHHH’,'column_fid’=>123);
$result=$collection->update($where,$newdata);
/*
* :
*
* {“_id”:ObjectId(“4d635ba2d549a02801000003″),”column_name”:”col709″,”column_exp”:”xiaocai”}
*
* {“_id”:ObjectId(“4d635ba2d549a02801000003″),”column_exp”:”HHHHHHHHH”,”column_fid”:123}
*/
//** **/
$where=array(‘column_name’=>’col’);
$newdata=array(‘column_exp’=>’multiple’,’91u’=>684435);
$result=$collection->update($where,array(‘$set’=>$newdata),array(‘multiple’=>true));
/**
* ’column_name’='col’
*/
//** **/
$where=array(’91u’=>684435);
$newdata=array(‘column_exp’=>’edit’);
$result=$collection->update($where,array(‘$set’=>$newdata,’$inc’=>array(’91u’=>-5)));
/**
* 91u=684435 , 91u 5
*/
/** **/
$where=array(‘column_name’=>’col685′);
$result=$collection->update($where,array(‘$unset’=>’column_exp’));
/**
* column_exp
*/
/*
* *
* :update(array $criteria, array $newobj [, array $options = array() ] )
* :1.
* 2. array(’91u’=>’684435′) array(’91u’=>684435)
* :http://www.mongodb.org/display/DOCS/Updating#Updating-%24bit
* *
*/
//*************************
//** **//
//*************************
/** **/
$collection->remove(array(‘column_name’=>’col399′));
//$collection->remove(); #
/** MongoId **/
$id = new MongoId(“4d638ea1d549a02801000011″);
$collection->remove(array(‘_id’=>(object)$id));
/*
* *
* {“_id”:ObjectId(“4d638ea1d549a02801000011″)}, 、
* $id = new MongoId(“4d638ea1d549a02801000011″);
* array(‘_id’=>(object)$id)
* *
*/
//*************************
//** **//
//*************************
/** **/
echo ‘count:’.$collection->count().”<br>”; #
echo ‘count:’.$collection->count(array(‘type’=>’user’)).”<br>”; #
echo ‘count:’.$collection->count(array(‘age’=>array(‘$gt’=>50,’$lte’=>74))).”<br>”; # 50 74
echo ‘count:’.$collection->find()->limit(5)->skip(0)->count(true).”<br>”; #
/**
* :$gt 、$gte 、$lt 、$lte 、$ne 、$exists
*/
/** **/
$cursor = $collection->find()->snapshot();
foreach ($cursor as $id => $value) {
echo “$id: “; var_dump($value); echo “<br>”;
}
/**
* :
* find() , $cursor , .
* , find() , , collection, $cursor .
* $cursor , :
* $cursor = $collection->find();
* $cursor->snapshot();
* http://www.bumao.com/index.php/2010/08/mongo_php_cursor.html
*/
/** **/
$cursor = $collection->findOne();
/**
* :findOne() snapshot(),fields() ;
*/
/** age,type **/
$cursor = $collection->find()->fields(array(“age”=>false,”type”=>false));
/** user **/
$cursor = $collection->find()->fields(array(“user”=>true));
/**
* :$cursor->fields(array(“age”=>true,”type”=>false));
*/
/** ( type,age ) and age!=0 and age<50 **/
$where=array(‘type’=>array(‘$exists’=>true),’age’=>array(‘$ne’=>0,’$lt’=>50,’$exists’=>true));
$cursor = $collection->find($where);
/** **/
$cursor = $collection->find()->limit(5)->skip(0);
/** **/
$cursor = $collection->find()->sort(array(‘age’=>-1,’type’=>1)); ##1 -1 ,
/** **/
$collection->ensureIndex(array(‘age’ => 1,’type’=>-1)); #1 -1
$collection->ensureIndex(array(‘age’ => 1,’type’=>-1),array(‘background’=>true)); # ( )
$collection->ensureIndex(array(‘age’ => 1,’type’=>-1),array(‘unique’=>true)); #
/**
* ensureIndex (array(),array(‘name’=>’ ’,'background’=true,’unique’=true))
* :http://www.php.net/manual/en/mongocollection.ensureindex.php
*/
/** **/
$cursor = $collection->find();
$array=array();
foreach ($cursor as $id => $value) {
$array[]=$value;
}
//*************************
//** **//
//*************************
// …
$conn->close(); #
/*
MongoDB
MySql :
CREATE TABLE IF NOT EXISTS `column`(
`column_id` int(16) NOT NULL auto_increment COMMENT ‘ ’,
`column_name` varchar(32) NOT NULL COMMENT ‘ ’,
PRIMARY KEY (`column_id`)
);
CREATE TABLE IF NOT EXISTS `article`(
`article_id` int(16) NOT NULL auto_increment COMMENT ‘ ’,
`article_caption` varchar(15) NOT NULL COMMENT ‘ ’,
PRIMARY KEY(`article_id`)
);
CREATE TABLE IF NOT EXISTS `article_body`(
`article_id` int(16) NOT NULL COMMENT ‘article.article_id’,
`body` text COMMENT ‘ ’
);
MongoDB :
$data=array(
‘column_name’ =>’default’,
‘article’ =>array(
‘article_caption’ => ‘xiaocai’,
‘body’ => ‘xxxxxxxxxx…’
)
);
$inc
, N; , N
array(’a’=>1,’b’=>’t’), a 5, :
$coll->update(
array(’b’=>’t’),
array(’$inc’=>array(’a’=>5)),
)
$set
array(’a’=>1,’b’=>’t’),b f, :
$coll->update(
array(’a’=>1),
array(’$set’=>array(’b’=>’f’)),
)
$unset
array(’a’=>1,’b’=>’t’), b , :
$coll->update(
array(’a’=>1),
array(’$unset’=>’b’),
)
$push
, ; , , ; , 。
array(’a’=>array(0=>’haha’),’b’=& gt;1), a, :
$coll->update(
array(’b’=>1),
array(’$push’=>array(’a’=>’wow’)),
)
, :array(’a’=>array(0=>’haha’,1=>’wow’),’b’=>1)
$pushAll
$push ,
$addToSet
,
array(’a’=>array(0=& gt;’haha’),’b’=>1), a, :
$coll->update(
array(’b’=>1),
array(’$addToSet’=>array(’a’=>’wow’)),
)
a wow, , , item——wow。
$pop
array(’a’=>array(0=>’haha’,1=& gt;’wow’),’b’=>1)
:
$coll->update(
array(’b’=>1),
array(’$pop=>array(’a’=>1)),
)
$coll->update(
array(’b’=>1),
array(’$pop=>array(’a’=>-1)),
)
$pull
, value , , 。
array(’a’=>array(0=>’haha’,1=>’wow’),’b’=>1), a value haha :
$coll->update(
array(’b’=>1),
array(’$pull=>array(’a’=>’haha’)),
)
: array(’a’=>array(0=>’wow’),’b’=>1)
$pullAll
$pull , 。
*/
?>