MongoDB查询语言
先插入记录
for(var i-1;i<11,i++) db.cus.insert({"id":i,"name":"张三","age":20+i})
(1)精确匹配器
例如:db.cus.find({"id":9}) db.cus.find({"name":"张三","age":21})
(2)$lt表示小于
例如:db.cus.find({age:{$lt:25}})
(3)$lte表示小于等于
例如:db.cus.find({age:{$lte:25}})
(4)$gt表示大于
例如:db.cus.find({age:{$gt:25}})
(5)$gte表示大于
例如:db.cus.find({age:{$gte:25}})
(6)$in表示返回的key的值在某些value范围内
例如:db.cus.find({id:{$in:[1,2,3,4]}})
(7)$nin表示返回的key的值在某些value范围之外,注意 $nin是比较低效的查询选择器,他会全表扫描,因此最好不要单独使用$nin
例如:db.cus.find({id:{$nin:[1,2]}})
(8)$ne表示不等于,单据使用,它也不会利用索引的优势,反而会全表扫描,最好与其他查询选择器配合使用。
例如:db.cus.find({id:{$ne:1}})
(9)$or表示或运算的选择器,主要用于对两个不同key对应的文档进行连接
例如:db.cus.find({$or:[{id:1},{age:22}]})
(10)$and表示与运算的选择器,主要用于对两个不同key对应的文档进行连接
例如:db.cus.find({$or:[{id:1},{age:22}]})
(11)$exists 与关系数据库中的exists不一样,因为mongodb的表结构是不固定的,有时候需要返回包含某个字段的所有记录或者不包含某个字段的所有记录,$exists这个时候就派上了用场
例如:db.cus.find({id:{$exists:false}) db.cus.find({"id":null})
(12)嵌套查询--1
插入语句
for(var i-1;i<11,i++) db.cus.insert({"id":i,"name":"张三"},"detail":{"age":20+i,"sex":"男"})
查询语句如下
db.cus.find({'detail.age':21})
(13)嵌套查询--2
插入语句
for(var i-1;i<11,i++) db.cus.insert({"id":i,"name":"张三"},"detail":[{"age":20+i,"sex":"男"},{"address":"广州市白云区","phone":"020-111111"}])
查询语句如下
db.cus.find({'detail.1.address':"广州市白云区"}) detail.1
表示要取数据中第二位置处的元素。
(14)查询显示表中字段
例如:db.cus.find({"age",{$gte:25}},{_id:0,id:0,name:1,age:1})
表示查询age大于25的所有记录,并且只显示name,age两个字段
(15)排序字段sort
例如:db.cus.find({}).sort({id:-1}) 表示降序排序
db.cus.find({}).skip(2).limit(3).sort({id:-1})
表示先对结果集合排序(降序排序),然后跳过2行记录,从这个位置开始返回接下来的3条记录。
注意:这里传递给skip的参数如果很大,那么查询语句将会扫描大量的文档,这样执行性能将会底下,因此我们在查询语句中尽量不使用skip,用其他方法来代替skip实现的功能