Mognodb数据库连接.
默认格式
php" id="highlighter_271555">
1
2
3
|
$m = new Mongo();
//这里采用默认连接本机的27017端口,当然也可以连接远程主机如 192.168.0.4:27017,如果端口是27017,端口可以省略。
|
标准连接
1
|
|
实例:
1
|
$m = new Mongo( "mongodb://127.0.0.1:27017/admin:admin" );
|
数据库的用户名和密码都是admin
数据库操作
插入数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
<?php
//这里采用默认连接本机的27017端口,当然你也可以连接远程主机如192.168.0.4:27017
//如果端口是27017,端口可以省略
$m = new Mongo( "mongodb://127.0.0.1:27017/admin:admin" );
//选择comedy数据库,如果以前没该数据库会自动创建,也可以用$m->selectDB("comedy");
$db = $m ->comedy;
//选择comedy里面的collection集合,相当于RDBMS里面的表,也可以使用
$collection = $db ->collection;
$db ->selectCollection( "collection" );
/*********添加一个元素**************/
$obj = array ( "title" => "php1" , "author" => "Bill Watterson" );
//将$obj 添加到$collection 集合中
$collection ->insert( $obj );
/*********添加另一个元素**************/
$obj = array ( "title" => "huaibei" , "online" => true);
$collection ->insert( $obj );
//$query = array("title" => "huaibei");
$query = array ( "_id" => $obj [ '_id' ] );
$cursor = $collection ->find( $query );
//遍历所有集合中的文档
foreach ( $cursor as $obj ) {
echo $obj [ "title" ] . "\n" ;
echo $obj [ "_id" ] . "\n" ;
}
//断开MongoDB连接
$m ->close();
|
带条件的查询
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
mysql: id = 123
mongo: array (‘id'=>123)
mysql: name link '%bar%'
mongo: array (‘name ' => new MongoRegex(‘/.*bar.*/i' ))
mysql: where id > 10
mongo: array (‘id ' => array(‘$gt' => 10))
mysql: where id >= 10
mongo: array (‘id ' => array(‘$gte' => 10))
mysql: where id < 10
mongo: array (‘id ' => array(‘$lt' => 10))
mysql: where id <= 10
mongo: array (‘id ' => array(‘$lte' => 10))
mysql: where id > 1 and id < 10
mongo: array (‘id ' => array(‘$gt' => 1, '$lt' => 10))
mysql: where id <> 10
mongo: array (‘id ' => array(‘$ne' => 10))
mysql: where id in(123)
mongo: array (‘id ' => array(‘$in' => array (1,2,3)))
mysql: where id not in(123)
mongo: array (‘id ' => array(‘$nin' => array (1,2,3)))
mysql: where id = 2 or id = 9
mongo: array (‘id ' => array(‘$or' => array ( array (‘id '=>2),array(‘id' =>9))))
mysql: order by name asc
mongo: array (‘sort '=>array(‘name' =>1))
mysql: order by name desc
mongo: array (‘sort '=>array(‘name' =>-1))
mysql: limit 0,2
mongo: array (‘limit '=>array(‘offset' =>0, 'rows' =>2))
mysql: select name,email
mongo: array (‘name ',' email')
mysql: select count (name)
mongo: array (‘ COUNT ') //注意:COUNT为大写
|
查询时,每个Object插入时都会自动生成一个独特的_id,它相当于RDBMS中的主键,用于查询时非常方便 (_id每一都不同,很像自动增加的id)
1
2
3
4
5
6
7
8
9
10
11
|
<?php
$param = array ( "name" => "joe" );
$collection ->insert( $param );
$joe = $collection ->findOne( array ( "_id" => $param [ '_id' ]));
print_R( $joe );
$m ->close();
|
返回结果:Array ( [_id] => MongoId Object ( [$id] => 4fd30e21870da83416000002 ) [name] => joe )
更改字段值
1
2
3
4
5
6
7
|
<?php
$sign = array ( "title" => 'php1' );
$param = array ( "title" => 'php1' , 'author' => 'test' );
$joe = $collection ->update( $sign , $param );
|
删除一个数据库
1
|
$m -> dropDB(“comedy”);
|
列出所有可用数据库
1
|
$m ->listDBs(); //无返回值
|
创建一个MongoDB对象
1
2
3
4
5
|
<?php
$mo = new Mongo();
$db = new MongoDB( $mo , 'dbname' ); //通过创建方式获得一个MongoDB对象
|
删除当前DB
1
2
3
4
5
|
<?php
$db = $mo ->dbname;
$db ->drop();
|
获得当前数据库名
1
2
3
4
5
|
<?php
$db = $mo ->dbname;
$db ->_tostring();
|
选择想要的collection:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
//A:
$mo = new Mongo();
$coll = $mo ->dbname->collname; //获得一个collection对象
//B:
$db = $mo ->selectDB( 'dbname' );
$coll = $db ->collname;
//C:
$db = $mo ->dbname;
$coll = $db ->collname;
//D:
$db = $mo ->dbname;
$coll = $db ->selectCollectoin( 'collname' ); //获得一个collection对象
|
插入数据(MongoCollection对象
1
2
3
4
5
6
7
|
$coll = $mo ->db->foo;
$a = array ( 'a' => 'b' );
$options = array ( 'safe' =>true);
$rs = $coll ->insert( $a , $options );
|
删除数据库中的记录(MongoCollection对象)
1
2
3
4
5
6
7
|
$coll = $mo ->db->coll;
$c = array ( 'a' =>1, 's' => array ( '$lt' =>100));
$options = array ( 'safe' =>true);
$rs = $coll ->remove( $c , $options );
|
更新数据库中的记录(MongoCollection对象)
1
2
3
4
5
6
7
8
9
|
$coll = $mo ->db->coll;
$c = array ( 'a' =>1, 's' => array ( '$lt' =>100));
$newobj = array ( 'e' => 'f' , 'x' => 'y' );
$options = array ( 'safe' =>true, 'multiple' =>true);
$rs = $coll ->remove( $c , $newobj , $options );
|
查询collection获得单条记录(MongoCollection类)
1
2
3
4
5
6
7
|
$coll = $mo ->db->coll;
$query = array ( 's' => array ( '$lt' =>100));
$fields = array ( 'a' =>true, 'b' =>true);
$rs = $coll ->findOne( $query , $fields );
|
查询collection获得多条记录(MongoCollection类)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
$coll = $mo ->db->coll;
$query = array ( 's' => array ( '$lt' =>100));
$fields = array ( 'a' =>true, 'b' =>true);
$cursor = $coll ->find( $query , $fields );
//排序
$cursor ->sort( array (‘字段'=>-1));(-1倒序,1正序)
//跳过部分记录
$cursor ->skip(100);跳过100行
//只显示部分记录
$cursor ->limit(100);只显示100行
返回一个游标记录对象MongoCursor。
|
针对游标对象MongoCursor的操作(MongoCursor类)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
$cursor = $coll ->find( $query , $fields );
while ( $cursor ->hasNext()){
$r = $cursor ->getNext();
var_dump( $r );
}
//或者
$cursor = $coll ->find( $query , $fields );
foreache( $cursor as $k => $v ){
var_dump( $v );
}
//或者
$cursor = $coll ->find( $query , $fields );
$array = iterator_to_array( $cursor );
|