轉】Nodejs對MongoDB模糊查詢


  原博文出自於:  http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/4/      感謝!

 

 

 

Nodejs對MongoDB模糊查詢

從零開始nodejs系列文章

從零開始nodejs系列文章,將介紹如何利Javascript做為服務端腳本,通過Nodejs框架web開發。Nodejs框架是基於V8的引擎,是目前速度最快的Javascript引擎。chrome瀏覽器就基於V8,同時打開20-30個網頁都很流暢。Nodejs標准的web開發框架Express,可以幫助我們迅速建立web站點,比起PHP的開發效率更高,而且學習曲線更低。非常適合小型網站,個性化網站,我們自己的Geek網站!!

關於作者
張丹(Conan), 程序員Java,R,PHP,Javascript
weibo:@Conan_Z
blog: http://blog.fens.me
email: bsspirit@gmail.com

轉載請注明出處:
http://blog.fens.me/nodejs-mongodb-regexp

reg-title

前言

模糊查詢是數據庫的基本操作之一,實現對給定的字符串是否與指定的模式進行匹配。如果字符完全匹配,可以用=等號表示,如果部分匹配可認為是一種模糊查詢。在關系型數據中,通過SQL使用like ‘%fens%’的語法。那么在mongodb中我們應該如何實現模糊查詢的效果呢。

目錄

  1. mongodb模糊查詢
  2. nodejs通過mongoose的模糊查詢

1. mongodb模糊查詢

我們打開mongodb,以name文字字段進行測試。

精確查詢
當{‘name’:’未來警察’}時,精確匹配到一條記錄。


db.movies.find({'name':'未來警察'})

reg

模糊查詢
{‘name’:/未來/},匹配到了多條記錄。


db.movies.find({'name':/未來/})

reg2

MongoDB的模糊查詢,其實是正則查詢的一種。
注:在關系型數據中,單獨有一個關鍵字like做模糊查詢,如果不用like,也可以在關系型數據中使用正則查詢。

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的模糊查詢

希望實現的效果:
reg3

下面說說如何用mongoose進行模糊查詢。

使用mongoose訪問mongodb,在 Mongoose使用案例–讓JSON數據直接入庫MongoDB 一文中已經講過。

我們對Movie建模,並構造dao層。

查詢所有電影


MovieDAO.prototype.findByName = function(query, callback) {
  Movie.findOne(query, function(err, obj){
    callback(err, obj);
  });
};

通過傳入query對象,就可以進行查詢。

接下來,構造query對象


//代碼片斷
exports.movie = function(req, res) {
  var query={};
  if(req.query.m2) {
    query['name']=new RegExp(req.query.m2);//模糊查詢參數
  }

  Movie.findByName (query,function(err, list){
    return res.render('admin/movie', {movieList:list});
  });
}

請注意,剛才我們已經分析了MongoDB的的模糊查詢是通過正則表達式實現的,對應mongodb中,可以直接使用 ‘/../’ 斜杠。
但是在nodejs中,必須要使用RegExp,來構建正則表達式對象。

其實很簡單,一層窗戶紙。知道了實現原理,一切都變得很容易。

轉載請注明出處:
http://blog.fens.me/nodejs-mongodb-regexp


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM