本文主要讲解PHP中Mongodb的除了增删改查的一些其他操作。

PHP操作Mongodb之增删改查篇中我们介绍了PHP中Mongodb的增加、删除、修改及查询数据的操作。本文主要是将查询时用到的高级知识跟大家分享下。

1、查询时的排序

在关系型数据库的查询中,往往会用到排序。例如时间倒序,点击率升序啦等等。在Mongodb的查询中,也有排序功能的。

语法格式:

$db->find()->sort(array('age' => 1));    //按age字段升序排序。1为升序,-1为降序。

例如:

<?php
//连接数据库
$connnect = new Mongo("mongodb://127.0.0.1:27017");
//选择数据库
$db = $connnect->selectDB('mydb')->selectCollection("user");
//查询所有数据,按age字段升序排序
$cursor = $db->find()->sort(array('age' => 1)); $array = array();
while($cursor->hasNext()) {
$array[] = $cursor->getNext();
}
echo "<pre>";
print_r($array);
?>

运行结果为:

2、查询时的skip和limit操作

同样,在关系型数据库中,有limit可以限制查询区间。在Mongodb中也有类似的功能,那就是skip和limit操作。skip是跳过前多少条数据;limit是查询多少条数据。例如接着上面的列子,我们从第二条数据开始,查询一条数据。代码如下:

<?php
//连接数据库
$connnect = new Mongo("mongodb://127.0.0.1:27017");
//选择数据库
$db = $connnect->selectDB('mydb')->selectCollection("user");
//按age字段升序查询,从第二条开始,查询一条数据
$cursor = $db->find()->sort(array('age' => 1))->skip(1)->limit(1); $array = array();
while($cursor->hasNext()) {
$array[] = $cursor->getNext();
}
echo "<pre>";
print_r($array);
?>

运行结果如下:

3、查询时的字段筛选

在查询时,我们往往会遇到,只需要查询某一个或者多个特定的字段,这就涉及到字段筛选。语法格式如下:

$db->find(array(), array('age' => true));    //第一个参数是查询条件,第二个参数是字段筛选。值为true,表示查询该字段;值为false,表示不查询该字段。

例如上面的列子,我们只想查询年龄这个字段,代码如下:

<?php
//连接数据库
$connnect = new Mongo("mongodb://127.0.0.1:27017");
//选择数据库
$db = $connnect->selectDB('mydb')->selectCollection("user"); //查询age和id两个字段。
$cursor = $db->find(array(), array('age' => true, 'id' => true)); $array = array();
while($cursor->hasNext()) {
$array[] = $cursor->getNext();
}
echo "<pre>";
?>

运行结果如下:

4、查询时的Like操作

在查询时,我们也会遇到需要模糊查询的时候。在关系型数据库中使用like查询即可,在mongodb数据库中,也有模糊查询的操作。语法格式如下:

$db->find(array('name' => new MongoRegex("/^j/")));

   //mongodb中的模糊查询是通过正则查询的

例如上面的例子,我们查询名字以j开头的数据,代码如下:

<?php
//连接数据库
$connnect = new Mongo("mongodb://127.0.0.1:27017");
//选择数据库
$db = $connnect->selectDB('mydb')->selectCollection("user");
//查询name字段以j开头的数据
$cursor = $db->find(array('name' => new MongoRegex("/^j/"))); $array = array();
while($cursor->hasNext()) {
$array[] = $cursor->getNext();
}
echo "<pre>";
print_r($array);
?>

运行结果如下:

5、查询时的count操作

在查询时,我们也许会碰到需要查询满足条件的数据的总和。这时就用到了count操作。语法格式如下:

$db->count(); 

例如上面的例子,我们查询数据数据库中的数据总和。代码如下:

<?php
//连接数据库
$connnect = new Mongo("mongodb://127.0.0.1:27017");
//选择数据库
$db = $connnect->selectDB('mydb')->selectCollection("user"); echo $db->count();
?>

运行结果是:3

6、查询时的or操作

在查询时,我们也许也会用到or操作。语法格式如下:

$db->find(array('$or' => array(array('id' => 1), array('name' => 'java'))));

例如上面的例子,我们查询id是1,或者name是java的数据。代码如下:

<?php
//连接数据库
$connnect = new Mongo("mongodb://127.0.0.1:27017");
//选择数据库
$db = $connnect->selectDB('mydb')->selectCollection("user"); $cursor = $db->find(array('$or' => array(array('id' => 1), array('name' => 'java')))); $array = array();
while($cursor->hasNext()) {
$array[] = $cursor->getNext();
}
echo "<pre>";
?>

运行结果是:

PHP操作Mongodb之高级查询篇的更多相关文章

  1. python操作mongodb根据_id查询数据的实现方法

    python操作mongodb根据_id查询数据的实现方法   python操作mongodb根据_id查询数据的实现方法,实例分析了Python根据pymongo不同版本操作ObjectId的技巧, ...

  2. python数据库-mongoDB的高级查询操作(55)

    一.MongoDB索引 为什么使用索引? 假设有一本书,你想看第六章第六节讲的是什么,你会怎么做,一般人肯定去看目录,找到这一节对应的页数,然后翻到这一页.这就是目录索引,帮助读者快速找到想要的章节. ...

  3. Python操作MongoDB看这一篇就够了

    MongoDB是由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象,它的字段值可以包含其他文档.数组及文档数组,非常灵活.在这一节中,我们就来看 ...

  4. mongodb的高级查询

    db的帮助文档 输入:db.help(); db.AddUser(username,password[, readOnly=false])  添加用户 db.auth(usrename,passwor ...

  5. MongoDB的使用学习之(六)MongoDB的高级查询之条件操作符

    此文分为两点,主要是在第二点--java 语法,但是按顺序必须先把原生态的语法写出来 (还有一篇文章也是不错的:MongoDB高级查询用法大全(包含MongoDB命令语法和Java语法,其实就是我整理 ...

  6. python 操作mongodb数据库模糊查询

    # -*- coding: utf-8 -*-import pymongoimport refrom pymongo import MongoClient #创建连接#10.20.66.106clie ...

  7. MongoDB学习--高级查询 [聚合Group]

    Group大约需要一下几个参数. key:用来分组文档的字段.和keyf两者必须有一个 keyf:可以接受一个javascript函数.用来动态的确定分组文档的字段.和key两者必须有一个 initi ...

  8. MongoDB高级查询详细

    前言 前几篇,老玩家绕道即可,新手晚上闲着也是蛋疼,不如把命令敲一边,这样你就会对MongoDB有一定的掌握啦.如果没有安装MongoDB去看我的上一篇博客  MongoDB下载安装与简单增删改查 前 ...

  9. mongodb高级查询

    前几篇,老玩家绕道即可,新手晚上闲着也是蛋疼,不如把命令敲一边,这样你就会对MongoDB有一定的掌握啦.如果没有安装MongoDB去看我的上一篇博客  MongoDB下载安装与简单增删改查 前奏:启 ...

随机推荐

  1. mysql设置外网访问

    公司有个mysql的数据库放在221服务器上,做手机app数据库连接的时候,本地调试没问题,一旦更新到外网142手机服务器(220.230.190.142),就是数据库连接超时.想到可能是mysql没 ...

  2. 动态规划小结(dynamic programming)

    动态规划在很多情况下可以降低代码的空间时间复杂度. 判断一道问题能否应用动态规划,需要关注问题是否具有最优子结构,当前规模的问题的解在之前问题的解里面,还要注意的是要满足无后效性的原则.随后就是寻找递 ...

  3. UnicodeDecodeError: ‘XXX' codec can't decode bytes in position X 的问题

    错误信息:UnicodeDecodeError: ‘XXX' codec can't decode bytes in position 2-5: illegal multibyte sequence ...

  4. 跨境B2B网站

    大家都在谈跨境电商,其实现在比较火的应该是跨境B2B网站,它被很多的业内人士所看好,并且也取得了很喜人的成绩,无论是经营方面还是品牌打造,都从多方向带动了行业的发展. 跨境B2B网站 一.从买方市场向 ...

  5. VS2010添加资源文件

    VS2010中资源文件管理在 双击打开Resources.resx 选择左上角资源文件类型 然后复制资源文件 粘贴到空白区域 则会自动生成资源文件代码 在项目中使用该资源文件时,通过global::P ...

  6. mybatis读取配置文件报错:Could not find resource configuration.xml

    今天用idea编译mybatis的java项目时,一直报错,找不到config.xml 查看class文件夹,确实没有xml文件 也就是说,xml文件没在编译范围内 在pom.xml中,把xml文件加 ...

  7. centos6配置网卡

    #设置开机启动和静态地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=D8::E6::3F:CF TYPE=Ethe ...

  8. 基于angular写的一个todolist

    对于新手来说,使用angularjs写一个todolist可以快速入门

  9. 8.16 CSS知识点7

    display(元素显示模式) 语法: display : block | none | inline | inline-block display  属性用来设置元素的显示方式. block     ...

  10. 虚幻引擎4笔记20160821 - 使用GPU粒子做雪花旋转镜头雪花忽有忽无的问题

    在使用GPU进行雪花制作的时候,雪花总是在镜头旋转的时候,一会有,一会无的情况,后来下载别人的例子才知道,原来要给粒子加上边界,具体解决方法如下图