Node.js對MongoDB數(shù)據(jù)庫實現(xiàn)模糊查詢的方法
前言
模糊查詢是數(shù)據(jù)庫的基本操作之一,實現(xiàn)對給定的字符串是否與指定的模式進行匹配。如果字符完全匹配,可以用=等號表示,如果部分匹配可認為是一種模糊查詢。在關(guān)系型數(shù)據(jù)中,通過SQL使用like ‘%fens%'的語法。那么在mongodb中我們應(yīng)該如何實現(xiàn)模糊查詢的效果呢。
目錄
- mongodb模糊查詢
- nodejs通過mongoose的模糊查詢
1. mongodb模糊查詢
我們打開mongodb,以name文字字段進行測試。
精確查詢
當(dāng){‘name':'未來警察'}時,精確匹配到一條記錄。
db.movies.find({'name':'未來警察'})

模糊查詢
{‘name':/未來/},匹配到了多條記錄。
db.movies.find({'name':/未來/})

MongoDB的模糊查詢,其實是正則查詢的一種。
注:在關(guān)系型數(shù)據(jù)中,單獨有一個關(guān)鍵字like做模糊查詢,如果不用like,也可以在關(guān)系型數(shù)據(jù)中使用正則查詢。
MongoDB官方介紹:http://docs.mongodb.org/manual/reference/operator/regex/
官方舉例:
db.collection.find( { field: /acme.*corp/i } );
db.collection.find( { field: { $regex: 'acme.*corp', $options: 'i' } } );
2. nodejs通過mongoose的模糊查詢
希望實現(xiàn)的效果:

下面說說如何用mongoose進行模糊查詢。
使用mongoose訪問mongodb,在 利用Mongoose讓JSON數(shù)據(jù)直接插入或更新到MongoDB 一文中已經(jīng)講過。
我們對Movie建模,并構(gòu)造dao層。
查詢所有電影
MovieDAO.prototype.findByName = function(query, callback) {
Movie.findOne(query, function(err, obj){
callback(err, obj);
});
};
通過傳入query對象,就可以進行查詢。
接下來,構(gòu)造query對象
//代碼片斷
exports.movie = function(req, res) {
var query={};
if(req.query.m2) {
query['name']=new RegExp(req.query.m2);//模糊查詢參數(shù)
}
Movie.findByName (query,function(err, list){
return res.render('admin/movie', {movieList:list});
});
}
請注意:剛才我們已經(jīng)分析了MongoDB的的模糊查詢是通過正則表達式實現(xiàn)的,對應(yīng)mongodb中,可以直接使用 ‘/../' 斜杠。
但是在nodejs中,必須要使用RegExp,來構(gòu)建正則表達式對象。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
node使用Mongoose類庫實現(xiàn)簡單的增刪改查
Mongoose是在nodejs環(huán)境中對MongoDB數(shù)據(jù)庫操作的封裝,這篇文章主要介紹了node使用Mongoose類庫實現(xiàn)簡單的增刪改查,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11
NodeJS?Express使用ORM模型訪問關(guān)系型數(shù)據(jù)庫流程詳解
這篇文章主要介紹了NodeJS?Express使用ORM模型訪問關(guān)系型數(shù)據(jù)庫流程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01
koa+mongoose實現(xiàn)簡單增刪改查接口的示例代碼
這篇文章主要介紹了koa+mongoose實現(xiàn)簡單增刪改查接口的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05
用nodejs的實現(xiàn)原理和搭建服務(wù)器(動態(tài))
下面小編就為大家?guī)硪黄胣odejs的實現(xiàn)原理和搭建服務(wù)器(動態(tài))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08
MQTT Client實現(xiàn)消息推送功能的方法詳解
這篇文章主要介紹了MQTT Client實現(xiàn)消息推送功能的方法,結(jié)合實例形式詳細分析了MQTT Client實現(xiàn)消息推送的基本原理、實現(xiàn)方法與相關(guān)操作注意事項,需要的朋友可以參考下2023-05-05
nodejs使用redis作為緩存介質(zhì)實現(xiàn)的封裝緩存類示例
這篇文章主要介紹了nodejs使用redis作為緩存介質(zhì)實現(xiàn)的封裝緩存類,涉及nodejs操作redis進行緩存設(shè)置相關(guān)操作技巧,需要的朋友可以參考下2018-02-02

