簡述
查詢就是返回一個集合中的文檔的子集
Mongoose 模型提供了
find、
findOne、
findById
三種方法用於文檔查詢。
為了方便后面課程的有效學習,我們先添加一些測試數據。
TestModel.create([ { name:"test1", age:20 }, { name:"test2", age:30 }, { name:"test3", age:24 }, { name:"test4", age:18 }, { name:"test5", age:60 }, { name:"test6", age:50, email:"t6@qq.com" }, { name:"test7", age:40, email:"t7@163.com" }, { name:"test8", age:27 }, { name:"test9", age:27, email:"t9@yeah.net" }, { name:"test10",age:65 } ], function(error,docs) { if(error) { console.log(error); } else { console.log('save ok'); } });
注:以上數據僅供后面測試,可以自行修改屬性值,但是必須符合我們之前所定義集合屬性,否則出錯就...
find 過濾查詢
前面我們學習了find的基本使用方法,相信你已經對它完全掌握了,今天呢將對find方法進行更深一步的學習,了解和掌握它的過濾功能,怎么個過濾法呢,請看如下介紹。
1.屬性過濾 find(Conditions,field,callback);
field省略或為Null,則返回所有屬性。
//返回只包含一個鍵值name、age的所有記錄 TestModel.find({},{name:1, age:1, _id:0},function(err,docs){ //docs 查詢結果集 })
注:我們只需要把顯示的屬性設置為大於零的數都可以,當然1是最好理解的,_id是默認返回,如果不要顯示加上("_id":0),但是,對其他不需要顯示的屬性且不是_id,如果設置為0的話將會拋異常或查詢無果。
findOne的基本用法
與find相同,但只返回單個文檔,也就說當查詢到即一個符合條件的數據時,將停止繼續查詢,並返回查詢結果。
1.單條數據 findOne(Conditions,callback);
TestModel.findOne({ age: 27}, function (err, doc){ // 查詢符合age等於27的第一條數據 // doc是查詢結果 });
findOne方法,只返回第一個符合條件的文檔數據。
findById的基本用法
與findOne相同,但它只接收文檔的_id作為參數,返回單個文檔。
1.單條數據 findById(_id, callback);
TestModel.findById('obj._id', function (err, doc){ //doc 查詢結果文檔 });
注:同樣是單條數據,findById和findOne還是有些區別的。
本次小結
我們講述了針對數據的幾個查詢方法,根據不同條件選擇相應的查詢方法。
總結:
1. find過濾查詢 :find查詢時我們可以過濾返回結果所顯示的屬性個數。
2. findOne查詢 :只返回符合條件的首條文檔數據。
3. findById查詢:根據文檔_id來查詢文檔。