php中的mongodb select常用操作代码示例,mongodbselect
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]'"

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP remains important in modern web development, especially in content management and e-commerce platforms. 1) PHP has a rich ecosystem and strong framework support, such as Laravel and Symfony. 2) Performance optimization can be achieved through OPcache and Nginx. 3) PHP8.0 introduces JIT compiler to improve performance. 4) Cloud-native applications are deployed through Docker and Kubernetes to improve flexibility and scalability.

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

The reasons why PHP is the preferred technology stack for many websites include its ease of use, strong community support, and widespread use. 1) Easy to learn and use, suitable for beginners. 2) Have a huge developer community and rich resources. 3) Widely used in WordPress, Drupal and other platforms. 4) Integrate tightly with web servers to simplify development deployment.

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP is used to build dynamic websites, and its core functions include: 1. Generate dynamic content and generate web pages in real time by connecting with the database; 2. Process user interaction and form submissions, verify inputs and respond to operations; 3. Manage sessions and user authentication to provide a personalized experience; 4. Optimize performance and follow best practices to improve website efficiency and security.
