美文网首页MongoDB极简教程 · Mongo · NoSQLPHP经验分享
【代码片-1】 MongoDB与PHP -- 高级查询

【代码片-1】 MongoDB与PHP -- 高级查询

作者: dreamer_lk | 来源:发表于2017-07-18 15:02 被阅读22次
    /*

    * $gt --- 大于

    * $lt --- 小于

    * $gte --- 大于或等于

    * $lte --- 小于或等于

    *

    * $ne --- 不等于

    * $in --- 在其中

    * $nin --- 不在其中

    *

    * $mod --- 取模

    * $all --- 存在所有值

    * $size --- 匹配元素数量

    * $exists --- 判断一个元素是否存在

    * $type --- 匹配元素类型

    * $not --- 取反

    *

    * $slice --- 返回数组的子集合

    * $where --- 可以执行任何JavaScript作为查询的一部分

    *

    * $set --- 修改器

    * $unset --- 删除键

    * $inc --- 自增或自减(只能为数字)

    * $upsert --- 如果没有查询到数据,就会以查询条件与数据为基础,新建一个记录

    *

    * 数组修改器

    * $push --- 数组末尾插入元素

    * $addToSet --- 插入元素,避免重复

    * $each ---

    * $pop --- 从数组任何一端删除元素

    * $pull --- 根据特定条件删除元素

    */

    //创建连接

    $conn=newMongo();

    //选择数据库

    $coll=$conn-> ceshi -> user;

    //No.01: 大于($gt)、小于($lt)、大于或等于($gte)、小于或等于($lte)

    //eg: "age" 大于2 小于等于10的文档

    $coll-> find(array('age'=>array('$gt'=> 2,'$lte'=> 10)));

    //No.02: 不等于($ne)、在其中($in)、不在其中($nin)

    //eg: "age" 不等于 5

    $coll-> find(array('age'=>array('$ne'=> 5)));

    //eg: "age" 是5或者6的记录

    $coll-> find(array('age'=>array('$in'=>array(5, 6))));

    //No.03: 取模($mod)

    //eg: "age" % 10 == 1

    $coll-> find(array('age'=>array('$mod'=>array(10, 1))));

    //No.04: 存在所有值($all)

    //eg: 用户身份"groupid" 同时属于5与6

    $coll-> find(array('groupid'=>array('$all'=>array(5, 6))));

    //* 数组很大多数情况下可以这样理解:每一个元素都是整个键的值

    //No.05: 匹配元素数量($size)

    //eg: 用户有两个身份

    $coll-> find(array('groupid'=>array('$size'=> 2)));

    //* 官网上说不能用来匹配一个范围内的元素,如果想找$size<5之类的,他们建议创建一个字段来保存元素的数量

    //No.06: 判断一个元素是否存在($exists)

    //eg: "age" 存在的用户

    $coll-> find(array('age'=>array('$exists'=> true)));

    //No.07: 匹配元素类型($type)

    //eg: "age" 是int 类型

    $coll-> find(array('age'=>array('$type'=> 16)));

    //* Int(16),String(2)

    //No.08: 取反($not)

    //eg: 获取 "age" 不为5的数据

    $coll-> find(array('age'=>array('$not':5)));

    //No.09: 正则表达式

    //eg: 获取列"user"以"a"开头的数据

    $coll-> find(array('user'=>'/^a/'));

    //No.10: 查询内嵌数据内的值

    $coll-> find(array('user.first'=>'lai'));

    //No.11: $elemMatch

    // 查询内嵌文档的时候,将限定条件进行分组

    $coll->find({'user':{'$elemMatch':{'first':'lai','last':'qian'}}});

    //No.12: Where查询 -- 非必要时不要使用,因为比常规查询慢很多

    $coll->find({'$where':'function(){ return this.x + this.y == 10;}'});

    $coll->find({'$where':'this.x+this.y==10'});

    // 非要使用的时候,先用常规查询过滤数据,where只用来调优数据

    相关文章

      网友评论

        本文标题:【代码片-1】 MongoDB与PHP -- 高级查询

        本文链接:https://www.haomeiwen.com/subject/zikhkxtx.html