mongodb学习(五) 查询
2014-07-30 10:37
211 查看
1. 按条件查询:
2.find的第二个参数可以指定要返回的字段:这里1 表示要显示的字段,0 表示要剔除的字段
3. 查询条件: "$lt","$lte","$gt","$gte": <,<=,>,>=
4. $in : 匹配指定键的多个值,; $nin和$in相反 $or 匹配多个键的值; $mod取模,将给定值除以第一个数,若余数等于第二个数就返回这条数据
5. 查询null:
6. 数组查询:
7. 根据数组长度查询:
8. $slice 限制返回的文档数
9. 尽量不使用$where: (1) 查询速度慢-->每个文档都要从BSON转换为js对象,然后通过$where表达式运行; (2)不能使用索引;
10. limit,skip,sort
避免使用skip略过大量结果. 否则速度会很慢,原因是:首先要找到这些要略过的数据,然后再抛弃这些数据;不使用skip分页的方法:
11. 获取随机文档 : 在保存数据时就插入一个随机字段,查询时根据生成的随机数来查找文档
db.users.find({"name":"MM1"})
2.find的第二个参数可以指定要返回的字段:这里1 表示要显示的字段,0 表示要剔除的字段
db.users.find({"name":"MM1"},{"name":1,"age":1})
db.users.find({"name":"MM1"},{"name":0})
3. 查询条件: "$lt","$lte","$gt","$gte": <,<=,>,>=
db.users.find({"age":{"$lte":70,"$gte":30}})
4. $in : 匹配指定键的多个值,; $nin和$in相反 $or 匹配多个键的值; $mod取模,将给定值除以第一个数,若余数等于第二个数就返回这条数据
db.users.find({"age":{"$in":[20,25,30]}}) db.users.find({"age":{"$nin":[20,25,30]}}) db.users.find({"$or":[{"age":20},{"winner":"true"}]}) db.users.find({"age":{"$mod":[20,5]}}) db.users.find({"age":{"$not":{"$mod":[20,5]}}})
5. 查询null:
db.users.find({"name":null}) //这样查询出来的还会匹配不包含该键(name)的文档 db.users.fin({"name":{"$in":[null],"$exists":true}}) //使用$exists,就可以准确查出
6. 数组查询:
db.users.find({"fruit":"apple"}) //查询含有apple的数组 db.users.find({"fruit":{"$all":["apple","banana"]}}) //查询包含有apple和banana的数组 db.users.find({"fruit.1":"banana"})//查询数组中第二值为banana的数组,数组是从0开始的
7. 根据数组长度查询:
db.users.find({"fruit":{"$size":3}}) //$size不能和$gte,$lte等合用,可以通过在更新数据时插入一个size字段解决
8. $slice 限制返回的文档数
9. 尽量不使用$where: (1) 查询速度慢-->每个文档都要从BSON转换为js对象,然后通过$where表达式运行; (2)不能使用索引;
10. limit,skip,sort
db.users.find().limit(10).skip(10).sort({"name":1})
避免使用skip略过大量结果. 否则速度会很慢,原因是:首先要找到这些要略过的数据,然后再抛弃这些数据;不使用skip分页的方法:
//(1)获取第一页 var page1=db.users.find().sort({"date"-1}).limit(20) //(2)使用最后一个date作为查询条件来获取下一页 var lastest=null whlie(page1.hasNext)){ lastest=page1.next(); } var page2=db.users.find({"date":{"$gt":lastest.date}}).sort({"date":-1}).limit(20)
11. 获取随机文档 : 在保存数据时就插入一个随机字段,查询时根据生成的随机数来查找文档
//插入数据 db.users.insert({"name":"11","age":22,"random":Math.random()}) db.users.insert({"name":"11","age":22,"random":Math.random()}) db.users.insert({"name":"11","age":22,"random":Math.random()}) db.users.insert({"name":"11","age":22,"random":Math.random()}) db.users.insert({"name":"11","age":22,"random":Math.random()}) //查询随机文档 var random=Math.random(); db.users.find({"random":{"$gt":random}}) //如果为空可以换为$lt
相关文章推荐
- MongoDB 学习笔记 之 QueryDocument 查询
- MongoDB学习整理之查询
- MongoDB的学习--文档的查询
- MongoDB学习 (六):查询
- MongoDB学习 (六):查询
- MongoDB学习笔记5 - 测试查询性能
- 【转载】MongoDB学习笔记(查询)
- 提高mongodb查询效率的方法--学习
- MongoDB学习 (六):查询
- MongoDB学习之旅八:MongoDB高级查询の游标使用
- 学习MongoDB--(4-1):MongoDB查询(基本查询条件操作符介绍)
- MongoDB学习笔记-->位置查询
- mongodb_查询操作使用_条件查询、where子句等(转并学习)
- MongoDB学习系列8:连接mongodb进行查询处理
- MongoDB学习 (六):查询
- MongoDB学习整理之查询
- mongodb的查询语句学习摘要
- NoSQL之【MongoDB】学习(二):DML和查询操作说明
- mongodb学习记录之一:基础查询
- MongoDB学习之旅九:MongoDB高级查询の存储过程