加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php中的mongodb select常用操作代码示例

发布时间:2020-12-13 02:01:34 所属栏目:PHP教程 来源:网络整理
导读:《:php中的mongodb select常用操作代码示例》要点: 本文介绍了:php中的mongodb select常用操作代码示例,希望对您有用。如果有疑问,可以联系我们。 PHP学习 前面说到了mongodb安装,设置装备摆设,集群,以及php的插入与更新等,请参考:mongodb. 下面说一下

《:php中的mongodb select常用操作代码示例》要点:
本文介绍了:php中的mongodb select常用操作代码示例,希望对您有用。如果有疑问,可以联系我们。

PHP学习前面说到了mongodb安装,设置装备摆设,集群,以及php的插入与更新等,请参考:mongodb.
下面说一下,mongodb select的常用操作

PHP进修测试数据:

代码如下:

{ "_id" : 1,"title" : "红楼梦","auther" : "曹雪芹","typeColumn" : "test","money" : 80,"code" : 10 }?
{ "_id" : 2,"title" : "围城","auther" : "钱钟书","money" : 56,"code" : 20 }?
{ "_id" : 3,"title" : "朝发白帝城","auther" : "李白","money" : 30,"code" : 30 }?
{ "_id" : 4,"title" : "快要酒","money" : 90,"code" : 40 }

1、取表条数

代码如下:

> db.books.count();?
4?
?
> db.books.find().count();?
4?
?
> db.books.count({auther: "李白" });?
2?
?
> db.books.find({money:{$gt:40,$lte:60}}).count();?
1?
?
> db.books.count({money:{$gt:40,$lte:60}});?
1?

php代码如下,按次序对应的:

代码如下:

$collection->count();???????????? //成果:4?
$collection->find()->count();???? //成果:4?
$collection->count(array("auther"=>"李白"));?? //成果:2?
$collection->find(array("money"=>array('$gt'=>40,'$lte'=>60)))->count();???? //成果:1?
$collection->count(array("money"=>array('$gt'=>40,'$lte'=>60)));??? //成果:1?

提示:$gt为大于、$gte为大于等于、$lt为小于、$lte为小于等于、$ne为不等于、$exists不存在、$in指定范围、$nin指定不在某范围

PHP进修2、取单条数据

代码如下:

> db.books.findOne();?
{?
??????? "_id" : 1,?
??????? "title" : "红楼梦",?
??????? "auther" : "曹雪芹",?
??????? "typeColumn" : "test",?
??????? "money" : 80,?
??????? "code" : 10?
}?
?
> db.books.findOne({auther: "李白" });?
{?
??????? "_id" : 3,?
??????? "title" : "朝发白帝城",?
??????? "auther" : "李白",?
??????? "money" : 30,?
??????? "code" : 30?
}?

php代码如下,按次序对应的

代码如下:

$collection->findOne();?
$collection->findOne(array("auther"=>"李白"));?

PHP进修3、find snapshot 游标

代码如下:

> db.books.find( { $query: {auther: "李白" },$snapshot: true } );?
{ "_id" : 3,"code" : 40 }

php代码如下:

代码如下:

/**
* 注意:
* 在我们做了find()操作,得到 $result 游标之后,这个游标还是动态的.
* 换句话说,在我find()之后,到我的游标循环完成这段时间,如果再有符合条件的记录被插入到collection,那么这些记录也会被$result 得到.
*/?
$result = $collection->find(array("auther"=>"李白"))->snapshot();?
foreach ($result as $id => $value) {?
?var_dump($value);?
}

4、自定义列显示

代码如下:

> db.books.find({},{"money":0,"auther":0});????? //money和auther不显示?
{ "_id" : 1,"title" : "将近酒","code" : 40 }?
?
> db.books.find({},{"title":1});????????? //只显示title列?
{ "_id" : 1,"title" : "红楼梦" }?
{ "_id" : 2,"title" : "围城" }?
{ "_id" : 3,"title" : "朝发白帝城" }?
{ "_id" : 4,"title" : "将近酒" }?
?
/**
*money在60到100之间,typecolumn和money二列必需存在
*/?
> db.books.find({money:{$gt:60,$lte:100}},{"typeColumn":1,"money":1});?
{ "_id" : 1,"money" : 80 }?
{ "_id" : 4,"money" : 90 }?

php代码如下,按顺序对应的:

代码如下:

$result = $collection->find()->fields(array("auther"=>false,"money"=>false));??? //不显示auther和money列?
?
$result = $collection->find()->fields(array("title"=>true));????? //只显示title列?
?
/**
?*money在60到100之间,typecolumn和money二列必需存在
?*/?
$where=array('typeColumn'=>array('$exists'=>true),'money'=>array('$exists'=>true,'$gte'=>60,'$lte'=>100));?
$result = $collection->find($where);?

5、分页

代码如下:

> db.books.find().skip(1).limit(1);? //跳过第条,取一条?
{ "_id" : 2,"code" : 20 }?

这根mysql,limit,offset有点相似,php代码如下:

代码如下:

$result = $collection->find()->limit(1)->skip(1);//跳过 1 条记载,取出 1条?

6、排序

代码如下:

> db.books.find().sort({money:1,code:-1});??? //1表现降序 -1表现升序,参数的先后影响排序顺序??
{ "_id" : 3,"code" : 30 }?
{ "_id" : 2,"code" : 20 }?
{ "_id" : 1,"code" : 10 }?
{ "_id" : 4,"code" : 40 }

php代码如下:

代码如下:

$result = $collection->find()->sort(array('code'=>1,'money'=>-1));?

7、隐约查询

代码如下:

> db.books.find({"title":/城/});????? //like '%str%' 糊查询集合中的数据?
{ "_id" : 2,"code" : 30 }?
?
> db.books.find({"auther":/^李/});??? //like 'str%' 糊查询集合中的数据?
{ "_id" : 3,"code" : 40 }?
?
> db.books.find({"auther":/书$/});?? //like '%str' 糊查询集合中的数据?
{ "_id" : 2,"code" : 20 }?
?
> db.books.find( { "title": { $regex: '城',$options: 'i' } } );?? //like '%str%' 糊查询集合中的数据?
{ "_id" : 2,"code" : 30 }?

php代码如下,按次序对应的:

代码如下:

$param = array("title" => new MongoRegex('/城/'));?
$result = $collection->find($param);?
?
$param = array("auther" => new MongoRegex('/^李/'));?
$result = $collection->find($param);?
?
$param = array("auther" => new MongoRegex('/书$/'));?
$result = $collection->find($param);?

PHP进修8、$in和$nin

代码如下:

> db.books.find( { money: { $in: [ 20,30,90] } } );?? //查找money等于20,90的数据?
{ "_id" : 3,"code" : 40 }?
?
> db.books.find( { auther: { $in: [ /^李/,/^钱/ ] } } );??? //查找以李,钱开头的数据?
{ "_id" : 2,"code" : 40 }

php代码如下,按次序对应的:

代码如下:

$param = array("money" => array('$in'=>array(20,90)));?
$result = $collection->find($param);?
foreach ($result as $id=>$value) {?
?var_dump($value);?
}?
?
$param = array("auther" => array('$in'=>array(new MongoRegex('/^李/'),new MongoRegex('/^钱/'))));?
$result = $collection->find($param);?
foreach ($result as $id=>$value) {?
?var_dump($value);?
}

PHP进修9、$or

代码如下:

> db.books.find( { $or: [ { money: 20 },{ money: 80 } ] } );?? //查找money即是20,80的数据?
{ "_id" : 1,"code" : 10 }?

php代码如下:

代码如下:

$param = array('$or'=>array(array("money"=>20),array("money"=>80)));?
$result = $collection->find($param);?
foreach ($result as $id=>$value) {?
?var_dump($value);?
}

PHP进修10、distinct

代码如下:

> db.books.distinct( 'auther' );?
[ "曹雪芹","钱钟书","李白" ]?
?
> db.books.distinct( 'auther',{ money: { $gt: 60 } });?
[ "曹雪芹","李白" ]?

PHP进修php代码如下:

代码如下:

$result = $curDB->command(array("distinct" => "books","key" => "auther"));?
foreach ($result as $id=>$value) {?
?var_dump($value);?
}?
?
$where = array("money" => array('$gte' => 60));?
$result = $curDB->command(array("distinct" => "books","key" => "auther","query" => $where));?
foreach ($result as $id=>$value) {?
?var_dump($value);?
}

PHP进修先写到这儿,上面只是SELECT的一些常用操作,接下来,还会写一点.

欢迎参与《:php中的mongodb select常用操作代码示例》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读