~~~ /* ~~~ \* $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只用来调优数据