MongoDB学习整理之查询
2012-06-19 16:01
232 查看
查询操作符
1)条件操作符
简单的操作符<、<=、>、>=如下面的代码所示:
//field 大于 value
db.collection.find({"field":{$gt:value}})
//field 小于 value
db.collection.find({"field":{$lt:value}})
//field 大于等于 value
db.collection.find({"field":{$gte:value}})
//field 小于等于 value
db.collection.find({"field":{$lte:value}})
同时满足多个条件:
//value1 < field < value2
db.collection.find({"field":{$gt:value,$lt:value2}})
2)$all匹配所有,类似于SQL语法in,不同是in只需要匹配括号内的某一个值,而$all必须满足括号内的所有值,如:
db.users.find({age:{$all:[6,8]}})
3)$exists判断字段是否存在,如查询所有存在age字段的纪录:
db.user.find({age:{$exists:true}})
4)null:即包括空值,也保存不存在的字段
5)$mod取模运算,例如查询age取模10等于1的数据:
db.student.find({age:{$mod:[10,1]}})
6)$ne不等于,例如查询x的值不等于3的数据:
db.things.find({x:{$ne:3}})
7)$in与SQL语法in一样,例如查询x的值在2、4、6范围内的数据:
db.things.find({x:{$in:[2,4,6]}})
8)$nin与$in相反,例如查询x的值不在2、4、6范围内的数据:
db.things.find({x:{$nin:[2,4,6]}})
9)$size匹配数组元素个数
10)count查询纪录条数,例如查询c1表的数据量:
db.c1.count()
11)skip限制返回纪录的起点,例如,从第3条纪录开始,返回5条纪录:
db.users.find().skip(3).limit(5)
12)sort排序,例如按照age升序排列:
db.users.find().sort({age:1})
按照age升序排列:
db.users.find().sort({age:-1})
13)distinct去掉重复值
14)group分组统计,例如将下面传统SQL代码转换Mongodb:
sql:select a,b.sum(c) csum from col1 where active=1 group by a,b
mongodb:db.col1.group(
{key:{a:true,b:true},
cond:{acitve :1},
reduce:function(obj,prev){prev.csum += obj.c;},
initial:{csum:0}
}
)
游标:
1)与大多数数据库产品一样,MongoDb也是用游标来循环处理每一条结果数据
for(var c=db.t1.find();c.hasNext();){printjson(c.next())}
2)forEach方式处理游标
db.t3.find().forEach(function(u){printjson(u);})
存储过程:存储在db.system.js表中,执行使用db.eval('存储过程名称'),
db.system.js.save({_id:"get_count",value:function(){return db.c1.count();}})
db.eval('get_count()')
1)条件操作符
简单的操作符<、<=、>、>=如下面的代码所示:
//field 大于 value
db.collection.find({"field":{$gt:value}})
//field 小于 value
db.collection.find({"field":{$lt:value}})
//field 大于等于 value
db.collection.find({"field":{$gte:value}})
//field 小于等于 value
db.collection.find({"field":{$lte:value}})
同时满足多个条件:
//value1 < field < value2
db.collection.find({"field":{$gt:value,$lt:value2}})
2)$all匹配所有,类似于SQL语法in,不同是in只需要匹配括号内的某一个值,而$all必须满足括号内的所有值,如:
db.users.find({age:{$all:[6,8]}})
3)$exists判断字段是否存在,如查询所有存在age字段的纪录:
db.user.find({age:{$exists:true}})
4)null:即包括空值,也保存不存在的字段
5)$mod取模运算,例如查询age取模10等于1的数据:
db.student.find({age:{$mod:[10,1]}})
6)$ne不等于,例如查询x的值不等于3的数据:
db.things.find({x:{$ne:3}})
7)$in与SQL语法in一样,例如查询x的值在2、4、6范围内的数据:
db.things.find({x:{$in:[2,4,6]}})
8)$nin与$in相反,例如查询x的值不在2、4、6范围内的数据:
db.things.find({x:{$nin:[2,4,6]}})
9)$size匹配数组元素个数
10)count查询纪录条数,例如查询c1表的数据量:
db.c1.count()
11)skip限制返回纪录的起点,例如,从第3条纪录开始,返回5条纪录:
db.users.find().skip(3).limit(5)
12)sort排序,例如按照age升序排列:
db.users.find().sort({age:1})
按照age升序排列:
db.users.find().sort({age:-1})
13)distinct去掉重复值
14)group分组统计,例如将下面传统SQL代码转换Mongodb:
sql:select a,b.sum(c) csum from col1 where active=1 group by a,b
mongodb:db.col1.group(
{key:{a:true,b:true},
cond:{acitve :1},
reduce:function(obj,prev){prev.csum += obj.c;},
initial:{csum:0}
}
)
游标:
1)与大多数数据库产品一样,MongoDb也是用游标来循环处理每一条结果数据
for(var c=db.t1.find();c.hasNext();){printjson(c.next())}
2)forEach方式处理游标
db.t3.find().forEach(function(u){printjson(u);})
存储过程:存储在db.system.js表中,执行使用db.eval('存储过程名称'),
db.system.js.save({_id:"get_count",value:function(){return db.c1.count();}})
db.eval('get_count()')
相关文章推荐
- 《MongoDB权威指南》学习整理----MongoDB文档查询
- MongoDB学习整理之查询
- MongoDB学习笔记-查询
- MongoDB学习 (五):查询操作符(Query Operators).1st
- mongodb的查询语句学习摘要
- MongoDB学习整理之更新Mongodb更新有两个命令:一个是update,另一个是saveup
- MongoDB的查询整理
- MongoDB学习8_MongoDB查询语句
- MongoDB学习整理
- .NET系列文章——近一年文章分类整理,方便各位博友们查询学习
- node.js学习mongoDB驱动——查询数据
- MySQL 学习教程(七)【整理】-数据的基本查询操作
- mongodb学习:查询
- mongodb 学习笔记-高级查询
- MongoDB-JAVA-Driver 3.2版本常用代码全整理(2) - 查询
- MongoDB学习(3)(条件查询,排序,索引的方法)
- MongoDB 学习笔记 之 QueryDocument 查询
- MongoDB快速入门学习笔记4 MongoDB的文档查询操作
- mongodb学习(五) 查询
- 大数据学习13:Hive的DML整理,查询走MapReduce还是走Fetch