国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

NodeJs操作MongoDB教程之分頁功能以及常見問題

2024-05-06 16:49:43
字體:
來源:轉載
供稿:網友

一,方法介紹

 1,聚合操作之count

count()方法可以查詢統計符合條件的集合的總數

1 db.User.count(<query>) // 此方法等價于 db.User.find(<query>).count()

在分布式集合中,會出現計算錯誤的情況,這個時候推薦使用aggregate;

 2,find() 方法以非結構化的方式來顯示所有文檔。

1 db.User.find();//相當于:select* from User;

3,exec() 方法用于檢索字符串中的正則表達式的匹配。(javascript方法)

4,sort() 方法對數據進行排序,sort() 方法可以通過參數指定排序的字段,并使用 1 和 -1 來指定排序的方式,其中 1 為升序排列,而 -1 是用于降序排列。

1 升序:db.User.find().sort({CreateTime: 1});2 降序:db.User.find().sort({CreateTime: -1});

5,skip()方法來跳過指定數量的數據,skip方法同樣接受一個數字參數作為跳過的記錄條數。

1 db.User.find().skip(2)//跳過2條

6,limit()方法接受一個數字參數,該參數指定從MongoDB中讀取的記錄條數。一般與skip連用

1 # limit()中number值為空時代表全部查出2 db.User.find().limit(2) #讀取的條數
1 # 常用在分頁方法中2 # 查詢User集合中,跳過前兩條記錄,每頁一條記錄3 > db.User.find().skip(2).limit(1)

二,封裝與接口拋出

2.1,分頁查詢

  1,根據查詢條件獲取總條數,使用count({},callback)方法

/** * 根據條件獲取有多少條數據 文檔數 * @param table_name 表名 * @param conditions 查詢條件 {a:1, b:2} * @param callback 回調方法 */MongoDbAction.getTotal = function (table_name, conditions, callback) { var node_model = this.getConnection(table_name); if (!node_model || node_model.message) { if (callback) callback(1, node_model) } else { node_model.find(conditions)  .count({})  .exec(function (err, total) {  if (err) {   if (callback) callback(err);  } else {   if (callback) callback(null, total);  }  }); }};

2,實現連寫查詢

 (1)這個可以用來做分頁,表示獲取從第1條(第1條記錄序號為0)記錄開始的10條記錄.類似與Mysql的limit 0, 10,如下:

{ limit:10,//pageSize skip:0//page:skip+1}

(2)按某個字段升序(1)降序(-1),如下 按照創建時間進行降序排列

sort: {CreateTime: -1},

(3)代碼連寫查詢實現:

/** * 連寫查詢 查詢多條數據 * @param table_name 表名 * @param conditions 查詢條件 {a:1, b:2} * @param options 選項:{fields: "a b c", sort: {time: -1}, limit: 10} * @param callback 回調方法 */MongoDbAction.whereCondition = function (table_name, conditions, options, callback) { var node_model = this.getConnection(table_name); if (!node_model || node_model.message) {  if (callback) callback(1, node_model) } else {  node_model.find(conditions)   .select(options.fields || '')   .sort(options.sort || {})//排序 //按某個字段升序(1)降序(-1)   .skip(options.skip || 0)//跳過的條數   .limit(options.limit || {})//查詢幾條   .exec(function (err, res) {    if (err) {     if (callback) callback(err);    } else {     if (callback) callback(null, res);    }   }); }};

3,根據所傳的參數實現分頁查詢

拋出分頁查詢的接口

//連寫查詢數據 包括分頁 獲取總條數router.put('/user/getSingleAndManyData', function (req, res) { var tableName = req.body.tableName;//'User' var IsEnable = req.body.IsEnable; var limit = req.body.pageSize; var sort = req.body.sort; var skip = req.body.page; let conditions = {  IsEnable } let options = {  sort: {CreateTime: sort},//排序  limit,//pageSize  skip:(limit*(skip-1))//page } // let options = { //  sort: {CreateTime: -1},//按某個字段升序(1)降序(-1) //  limit:10, //  skip:(limit*(skip-1))//skip=1=> skip:0 // } // 這個可以用來做分頁,表示獲取從第1條(第1條記錄序號為0)記錄開始的10條記錄.類似與Mysql的limit 0, 10 let data = {  httpCode: 200,  message: "查詢成功!",  status: 1,  data: null,  page:skip,  pageSize:limit }  MongoDbAction.getTotal(tableName,conditions, function (err, total) {  if (err) {   data.total=0   data.status = 0   data.message = "未查詢到數據!"   data.data = null   res.status(data.httpCode).json(data);  } else {   MongoDbAction.whereCondition(tableName,conditions,options, function (err, result) {    if (!err) {     data.total=total     data.data = result     res.status(data.httpCode).json(data);    } else {     data.total=0     data.status = 0     data.message = "未查詢到數據!"     data.data = result     res.status(data.httpCode).json(data);    }   });  } }); })

4,接口調用,返回的結果集如下:

NodeJs,MongoDB,分頁

三,常見問題

1,連接警告

警告:(node:204) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.

1 mongoose.connect(dbURL);// 連接數據庫 存在警告

NodeJs,MongoDB,分頁

解決辦法:連接配置添加: { useNewUrlParser: true }

1 mongoose.connect(dbURL,{useNewUrlParser:true});//連接數據庫

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 抚顺县| 资兴市| 文登市| 盐池县| 吴堡县| 娄烦县| 沽源县| 宁河县| 车险| 奇台县| 香河县| 诏安县| 成安县| 莱阳市| 冀州市| 莱芜市| 阳泉市| 连江县| 定兴县| 南召县| 建湖县| 闻喜县| 隆子县| 西峡县| 新竹县| 开封市| 高唐县| 江陵县| 通许县| 监利县| 西吉县| 泸西县| 石屏县| 沙田区| 方正县| 舒兰市| 博客| 神池县| 金华市| 常宁市| 静乐县|