MongoDb的分页查询,游标,存储过程
来源:互联网 发布:宝马五系轮毂数据 编辑:程序博客网 时间:2024/05/16 04:54
1、 查询条数。
源数据如下:
>db.product.find({$where:nameNotEntity});
{"_id" : ObjectId("57182150560ca68a25e2991c"),"id" : "1", "name" : null, "price" : 4}
{"_id" : ObjectId("57182150560ca68a25e2991e"),"id" : "3", "price" : 6 }
{ "_id" : ObjectId("571979394cdf1f6d55d21e99"),"id" : "4", "name" : "签字笔2", "price" : 5,"socp" : [ 1, 2, 3 ] }
{ "_id" : ObjectId("5729563ad4e95f820161c16c"),"id" : "2", "name" : "粉笔", "socp" : {"child" : 3 } }
a) Count(),limit(),skip()与sort();
Count直接查询总条数
>db.product.find().count();
4
Limit(n) ,查询n条
>db.product.find().limit(2);
{"_id" : ObjectId("57182150560ca68a25e2991c"),"id" : "1", "name" : null, "price" : 4}
{"_id" : ObjectId("57182150560ca68a25e2991e"),"id" : "3", "price" : 6 }
>db.product.find().limit(2).count();
4
>db.product.find().limit(2).count(true);
2
skip(n),跳过起始第n条
>db.product.find().limit(2).skip(2).sort({id:1});
{"_id" : ObjectId("57182150560ca68a25e2991e"),"id" : "3", "price" : 6 }
{ "_id" : ObjectId("571979394cdf1f6d55d21e99"),"id" : "4", "name" : "签字笔2", "price" : 5,"socp" : [ 1, 2, 3 ] }
sort({字段:m}),按照某个字段排序,m为1,升序,-1为降序
>db.product.find().limit(4).sort({id:-1});
{"_id" : ObjectId("571979394cdf1f6d55d21e99"),"id" : "4", "name" : "签字笔2", "price" : 5,"socp" : [ 1, 2, 3 ] }
{"_id" : ObjectId("57182150560ca68a25e2991e"),"id" : "3", "price" : 6 }
{"_id" : ObjectId("5729563ad4e95f820161c16c"),"id" : "2", "name" : "粉笔", "socp" : {"child" : 3 } }
{ "_id" : ObjectId("57182150560ca68a25e2991c"),"id" : "1", "name" : null, "price" : 4}
b) MongDB的排序规则
最小值<null <数字 < 字符串
< 对象/文档 < 数组 < 二进制数据 < 对象id
< 布尔类型 < 日期型< 时间戳 <正则表达式<最大值
c) 剔除重复
语法语法:db.runCommand({“distinct”:集合名,“key”:”获得不重复数据的字段”});
d) S
e)
2、 分页等查询
数据量不大的时候,可以使用Count(),limit(),skip()与sort();组合使用。但是,skip是一条一条的跳到指定索引点才开始进行匹配数据,性能是极其低下的。所以当数据量大的时候。不采用;
自定义id,根据id来分页;如,第一页到了id为24的,使用,匹配id>24的,在limit(需要拿的条数);
3、 游标与存储过程
a) 游标
> varre=db.product.find();
>while(re.hasNext()){ printjson(re.next())}
{"_id" : ObjectId("57182150560ca68a25e2991c"), "id" : "1","name": null,"price" : 4}
{ "_id" : ObjectId("57182150560ca68a25e2991e"),"id" : "3", "price" : 6 }
{"_id" :ObjectId("571979394cdf1f6d55d21e99"),"id" : "4","name": "签字笔2", "price" : 5,"socp": [1,2,3] }
{"_id" : ObjectId("5729563ad4e95f820161c16c"),"id": "2","name" : "粉笔", "socp" : {"child" : 3 }}
> var re=db.product.find();
>re.forEach(function(obj){
...printjson(obj)
... })
{"_id": ObjectId("57182150560ca68a25e2991c"), "id" : "1","name" :null,"price" : 4}
{ "_id" : ObjectId("57182150560ca68a25e2991e"),"id" : "3", "price" : 6 }
{"_id" :ObjectId("571979394cdf1f6d55d21e99"),"id" : "4","name": "签字笔2", "price" : 5,"socp": [1,2,3] }
{"_id" : ObjectId("5729563ad4e95f820161c16c"),"id": "2","name" : "粉笔", "socp" : {"child" : 3 }}
b) 存储过程,MongoDB的存储过程就是一个js的函数
语法:定义好函数后,使用db.system.js.save({“_id”:名称,value:函数})保存;
然后,可以通过如下命令查看:db.system.js.find();通过db.eval(名称)命令调用:
> varmyDb=function(a,b){
return a+b;
}
>db.system.js.save({"_id":"myDbSave",value:myDb});
WriteResult({"nMatched" : 0, "nUpserted" : 1, "nModified" : 0,"_id" : "myDbSave" })
>db.system.js.find();
{ "_id" : "myDbSave", "value" : function(a,b){ return a+b; } }
>db.eval("myDbSave(10,2)");
12
- MongoDb的分页查询,游标,存储过程
- MongoDb的分页查询,游标,存储过程
- 利用SQL的游标存储过程分页
- 分页查询的存储过程
- MongoDB游标和存储过程
- 游标对于分页存储过程
- 游标对于分页存储过程
- 游标对于分页存储过程
- 游标对于分页存储过程
- 游标对于分页存储过程
- 游标对于分页存储过程
- 游标对于分页存储过程
- mongoDB(4):find()查询、分页、游标
- MongoDB的分页、排序、游标
- 分页查询存储过程
- 分页查询存储过程
- 存储过程分页查询
- 使用游标编写的存储过程进行分页
- 【英语】程序员,你应该懂一些英语
- M8W2 | 每周新产品体验
- 在eclipse中添加C/C++开发插件
- 学生管理系统
- 软件分享
- MongoDb的分页查询,游标,存储过程
- 百度之星初赛(A)--度度熊的01世界----bfs搜索
- 简易的iOS导航栏颜色渐变方案
- auto与decltype
- POJ
- 《人月神话》
- JDBC实现员工管理系统(一)
- 行级元素 块级元素 行内块级元素
- String和StringBuilder的区别