手机版

NodeJs操作MongoDB的分页功能及常见问题教程

时间:2021-08-26 来源:互联网 编辑:宝哥软件园 浏览:

一,方法介绍

1、聚合操作的计数

count()方法可以查询和计数合格集合的总数

1 db。User.count(查询)//这个方法相当于db。User.find(查询)。计数()。在分布式集合中,会有计算错误,建议使用聚合;此时;

2.2,find()方法以非结构化的方式显示所有文档。

1 db。user . find();//相当于:从用户中选择*;3.3,exec()方法用于检索字符串中正则表达式的匹配。(javascript方法)

4.sort()方法对数据进行排序。sort()方法可以通过参数指定排序字段,使用1和-1指定排序方法,其中1表示升序,而-1表示降序。

1升序:db.user.find()。排序({ create time : 1 });2降序:db.user.find()。排序({ create time :-1 });5、skip()方法跳过指定数量的数据,skip方法还接受一个number参数作为跳过记录的数量。

1 db。User.find()。skip(2)//skip 2 6,6,limit()方法接受一个数字参数,该参数指定从MongoDB读取的记录数。通常与skip一起使用

当1 # limit()中的数值为空时,表示所有文章都被2 db读取。User.find()。找到限制(2) #项。1 #常用于分页方法。2 #查询用户集,跳过前两条记录,每页一条记录3 db。user.find()。跳过(2)。限制(1)第二,包装和

2.1、分页查询

1、根据查询条件获取总数,使用count({},callback)方法

/* * *根据条件* @ param table _ name table name * @ param conditions查询条件{a:1,B:2} * @param回调方法*/MongoDB操作获取数据文档数。getTotal=函数(table _ name,conditions,callback) {var node _ model=this。get connection(table _ name);if(!node _ model | | node _ model . message){ if(回调)回调(1,node _ model)} else { node _ model . find(条件)。计数({})。exec(函数(err,total) { if (err) { if(回调)回调(err);} else { if(回调)回调(null,total);} });}};2、实现连续书写查询

(1)这可以用于分页,这意味着从第一条记录开始获得10条记录(第一条记录的序列号为0)。它类似于Mysql的限制0,10,如下所示:

{limit:10,//page sizesskip :0//page : skip 1 }(2)按照某个字段的升序(1)降序(-1),下面按照创建时间降序排序。

Sort: {createtime:-1},(3)代码连续写入查询的实现:

/* * *通过连续写入查询来查询多条数据* @ param table _ name table name * @ param conditions查询条件{A:1,B33602} * @ paramoptions选项:{Fields 3360' A B C ',Sort: {time:-1},limit: 10} * @ paramcallback回调方法*/MongoDB操作。其中条件=函数(table _ name,条件,选项,回调){ var node _ model=this . getconnection(table _ name);if(!Node _ model | | Node _ model . message){ if(回调)回调(1,Node _ model)} else {node _ model。查找(条件)。选择(选项。字段| | ' ')。排序(选项。sort | | { })//sort//按升序(1)降序(-1)对字段进行排序。跳过(选项。跳过|。0)//跳过的项目数。limit(options.limit || {})//查询几个项目。exec(函数(err,RES) {if (err) {if(回调)回调(err);} else { if(回调)回调(null,RES);} });}};3.根据传输的参数实现寻呼查询

引发分页查询的接口

//连写查询数据包括分页获取总条数路由器。put('/user/getsingletandmany data ',function (req,RES){ var tableName=req。尸体。tableName//“用户”变量IsEnable=req。尸体。IsEnablevar限制=请求。尸体。页面大小;var sort=请求。尸体。排序;var skip=req。尸体。页面;让条件={ IsEnable } let选项={ sort : { create time : sort },//排序limit,//页面大小skip :(limit *(skip-1))//page }//let options={//sort : { create time :-1 },//按某个字段升序(1)降序(-1) //limit:10,//skip :(limit *(skip-1))//skip=1=skip :0/}//这个可以用来做分页,表示获取从第一条(第一条记录序号为0)记录开始的10条记录。类似与关系型数据库的限制0,10让数据={ httpCode: 200,message: '查询成功!',status: 1,data: null,page:skip,页面大小: limit } mongodbaction。gettotal(tableName,conditions,function (err,total){ if(err){ data。总计=0数据。状态=0数据。消息='未查询到数据!'数据。数据=空RES . status(数据。HttpCode ).json(数据);} else { mongodbaction。where条件(tableName,条件,选项,函数(err,result) { if(!err){数据。总计=总数据。数据=结果RES .状态(数据。httpcode ).json(数据);} else { data。总计=0数据。状态=0数据。消息='未查询到数据!'数据。数据=结果。状态(数据。httpcode ).json(数据);} });} });})4,接口调用,返回的结果集如下:

三,常见问题

1,连接警告

警告:(节点:204)不推荐使用警告:当前的统一资源定位器字符串解析器不推荐使用,并将在未来版本中删除。要使用新的解析器,请将选项{ useNewUrlParser: true }传递给MongoClient.connect .

1蒙古人。connect(DBURl);//连接数据库存在警告

解决办法:连接配置添加:{ useNewUrlParser: true }

1 mongoose.connect(dbURL,{ useNewurlperser : TRUE });//连接数据库总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

版权声明:NodeJs操作MongoDB的分页功能及常见问题教程是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。