php中的mongodb select常用操作代码示例,mongodbselect_PHP教程
php中的mongodb select常用操作代码示例,mongodbselect
前面说到了mongodb安装,配置,集群,以及php的插入与更新等,请参考:mongodb。
下面说一下,mongodb select的常用操作
测试数据:
{ "_id" : 1, "title" : "红楼梦", "auther" : "曹雪芹", "typeColumn" : "test", "money" : 80, "code" : 10 }
{ "_id" : 2, "title" : "围城", "auther" : "钱钟书", "typeColumn" : "test", "money" : 56, "code" : 20 }
{ "_id" : 3, "title" : "朝发白帝城", "auther" : "李白", "typeColumn" : "test", "money" : 30, "code" : 30 }
{ "_id" : 4, "title" : "将近酒", "auther" : "李白", "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指定不在某范围
2、取单条数据
> db.books.findOne();
{
"_id" : 1,
"title" : "红楼梦",
"auther" : "曹雪芹",
"typeColumn" : "test",
"money" : 80,
"code" : 10
}
> db.books.findOne({auther: "李白" });
{
"_id" : 3,
"title" : "朝发白帝城",
"auther" : "李白",
"typeColumn" : "test",
"money" : 30,
"code" : 30
}
php代码如下,按顺序对应的
$collection->findOne();
$collection->findOne(array("auther"=>"李白"));
3、find snapshot 游标
> db.books.find( { $query: {auther: "李白" }, $snapshot: true } );
{ "_id" : 3, "title" : "朝发白帝城", "auther" : "李白", "typeColumn" : "test", "money" : 30, "code" : 30 }
{ "_id" : 4, "title" : "将近酒", "auther" : "李白", "money" : 90, "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" : "红楼梦", "typeColumn" : "test", "code" : 10 }
{ "_id" : 2, "title" : "围城", "typeColumn" : "test", "code" : 20 }
{ "_id" : 3, "title" : "朝发白帝城", "typeColumn" : "test", "code" : 30 }
{ "_id" : 4, "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, "typeColumn" : "test", "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, "title" : "围城", "auther" : "钱钟书", "typeColumn" : "test", "money" : 56, "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, "title" : "朝发白帝城", "auther" : "李白", "typeColumn" : "test", "money" : 30, "code" : 30 }
{ "_id" : 2, "title" : "围城", "auther" : "钱钟书", "typeColumn" : "test", "money" : 56, "code" : 20 }
{ "_id" : 1, "title" : "红楼梦", "auther" : "曹雪芹", "typeColumn" : "test", "money" : 80, "code" : 10 }
{ "_id" : 4, "title" : "将近酒", "auther" : "李白", "money" : 90, "code" : 40 }
php代码如下:
$result = $collection->find()->sort(array('code'=>1,'money'=>-1));
7、模糊查询
> db.books.find({"title":/城/}); //like '%str%' 糊查询集合中的数据
{ "_id" : 2, "title" : "围城", "auther" : "钱钟书", "typeColumn" : "test", "money" : 56, "code" : 20 }
{ "_id" : 3, "title" : "朝发白帝城", "auther" : "李白", "typeColumn" : "test", "money" : 30, "code" : 30 }
> db.books.find({"auther":/^李/}); //like 'str%' 糊查询集合中的数据
{ "_id" : 3, "title" : "朝发白帝城", "auther" : "李白", "typeColumn" : "test", "money" : 30, "code" : 30 }
{ "_id" : 4, "title" : "将近酒", "auther" : "李白", "money" : 90, "code" : 40 }
> db.books.find({"auther":/书$/}); //like '%str' 糊查询集合中的数据
{ "_id" : 2, "title" : "围城", "auther" : "钱钟书", "typeColumn" : "test", "money" : 56, "code" : 20 }
> db.books.find( { "title": { $regex: '城', $options: 'i' } } ); //like '%str%' 糊查询集合中的数据
{ "_id" : 2, "title" : "围城", "auther" : "钱钟书", "typeColumn" : "test", "money" : 56, "code" : 20 }
{ "_id" : 3, "title" : "朝发白帝城", "auther" : "李白", "typeColumn" : "test", "money" : 30, "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);
8、$in和$nin
> db.books.find( { money: { $in: [ 20,30,90] } } ); //查找money等于20,30,90的数据
{ "_id" : 3, "title" : "朝发白帝城", "auther" : "李白", "typeColumn" : "test", "money" : 30, "code" : 30 }
{ "_id" : 4, "title" : "将近酒", "auther" : "李白", "money" : 90, "code" : 40 }
> db.books.find( { auther: { $in: [ /^李/,/^钱/ ] } } ); //查找以李,钱开头的数据
{ "_id" : 2, "title" : "围城", "auther" : "钱钟书", "typeColumn" : "test", "money" : 56, "code" : 20 }
{ "_id" : 3, "title" : "朝发白帝城", "auther" : "李白", "typeColumn" : "test", "money" : 30, "code" : 30 }
{ "_id" : 4, "title" : "将近酒", "auther" : "李白", "money" : 90, "code" : 40 }
php代码如下,按顺序对应的:
$param = array("money" => array('$in'=>array(20,30,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);
}
9、$or
> db.books.find( { $or: [ { money: 20 }, { money: 80 } ] } ); //查找money等于20,80的数据
{ "_id" : 1, "title" : "红楼梦", "auther" : "曹雪芹", "typeColumn" : "test", "money" : 80, "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);
}
10、distinct
> db.books.distinct( 'auther' );
[ "曹雪芹", "钱钟书", "李白" ]
> db.books.distinct( 'auther' , { money: { $gt: 60 } });
[ "曹雪芹", "李白" ]
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);
}
先写到这儿,上面只是SELECT的一些常用操作,接下来,还会写一点。
据我所知,目前mongoDB没有“或”这个东西
但我刚才在网上查了下
发现了下面的信息,你参考下吧
在mongodb中有$or 操作符的,官网中给出的例子如下:
Simple:
db.foo.find( { $or : [ { a : 1 } , { b : 2 } ] } )
With another field
db.foo.find( { name : "bob" , $or : [ { a : 1 } , { b : 2 } ] } )
The $or operator retrieves matches for each or clause individually and eliminates duplicates when returning results. A number of $or optimizations are planned for 1.8. See this thread for details.
$or cannot be nested.
复合查询?例如。详细的意思不用我解说了吧
$sql="select * from p_newsbase as a, p_newscontent as b where a.id=b.nid and a.id='$_GET[id]'"

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

在开发一个电商网站时,我遇到了一个棘手的问题:如何为用户提供个性化的商品推荐。最初,我尝试了一些简单的推荐算法,但效果并不理想,用户的满意度也因此受到影响。为了提升推荐系统的精度和效率,我决定采用更专业的解决方案。最终,我通过Composer安装了andres-montanez/recommendations-bundle,这不仅解决了我的问题,还大大提升了推荐系统的性能。可以通过一下地址学习composer:学习地址

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP适用于Web开发和内容管理系统,Python适合数据科学、机器学习和自动化脚本。1.PHP在构建快速、可扩展的网站和应用程序方面表现出色,常用于WordPress等CMS。2.Python在数据科学和机器学习领域表现卓越,拥有丰富的库如NumPy和TensorFlow。

PHP仍然流行的原因是其易用性、灵活性和强大的生态系统。1)易用性和简单语法使其成为初学者的首选。2)与web开发紧密结合,处理HTTP请求和数据库交互出色。3)庞大的生态系统提供了丰富的工具和库。4)活跃的社区和开源性质使其适应新需求和技术趋势。

PHP是一种服务器端脚本语言,用于动态网页开发和服务器端应用程序。1.PHP是一种解释型语言,无需编译,适合快速开发。2.PHP代码嵌入HTML中,易于网页开发。3.PHP处理服务器端逻辑,生成HTML输出,支持用户交互和数据处理。4.PHP可与数据库交互,处理表单提交,执行服务器端任务。
