mogoose_mongodb_entity

先貼源代碼,讓我們一步一步分析。

 var mongoose = require("mongoose");

var db = mongoose.connect("mongodb://127.0.0.1:27017/test");

 var TestSchema = new mongoose.Schema({

        name : { type:String },

        age  : { type:Number, default:0 },

        email: { type:String },

        time : { type:Date, default:Date.now }

    });

    var TestModel = db.model("test1", TestSchema );

    var Etity=new TestModel({

        name:"zhangsan",

        age:25,

        email:"[email protected]"

    });//通過 Model創建模型

    Etity.save(function(error,doc){

        console.log(doc);

    });//通過Etity.save存入mongodb數據庫

   我們引用的mongoose模塊,要想了解mongoose,我們首先了解一下mongodb,他和mysql一樣都是一個開源的數據庫,但他們區別在,前者是一個非關係性數據庫,後者是一個關係性數據庫。相比MySql那樣的數據庫,他更顯得輕巧、靈活,非常適合在數據規模很大、事務性不強的場合下使用。同時它也是一個對象數據庫,沒有表、行等概念,也沒有固定的模式和結構,所有的數據以文檔的形式存儲(文檔,就是一個關聯數組式的對象,它的內部由屬性組成,一個屬性對應的值可能是一個數、字符串、日期、數組,甚至是一個嵌套的文檔。),數據格式就是JSON。

知道了MongoDB,我們就可以來看一下Mongoose了,Mongoose其實是MongoDB的一個對象模型的工具,是基於node-mongodb-native開發的MongoDB nodejs驅動,大家都知道,只要是個數據庫,你要想用別的語言去操作它,就必須有對應的驅動,node-mongodb-native就是這個意思。並且可以在異步的環境下執行。同時它也封裝了MongoDB的操作,也就是說裏面封裝了一些方法,可以直接對MongoDB數據庫進行增刪查改。從而才能讓Nodejs操作數據庫更簡單啥,不然你用MongoDB的原生語法去操作,還要自己去封裝這些語法。所以Mongoose就是爲了方便。

現在,我們來說上面的代碼,首先先要引用模塊,這就相當於java,C#裏面的導包,因爲這種模塊沒有封裝成原型,所以直接調用connect方法,方法的參數是一個字符串,字符串是一個url地址,填寫數據庫的連接地址以及庫名。再利用mongoose的schema方法建立字段。那接着我們就來說說schema這個用途。Schema--一種以文件形式存儲的數據庫模型骨架,無法直接通往數據庫端,也就是說它不具備對數據庫的操作能力,僅僅只是數據庫模型在程序片段中的一種表現,可以說是數據屬性模型,直白的說就是一個表結構。接着呢,我們就用mongoose中的model,這個model呢也要說一下,也蠻重要。它是由Schema構造生成的模型,除了Schema定義的數據庫骨架以外,還具有操作數據庫的行爲。通過這個創建了,就可以操作數據庫了。這個model方法需要兩個參數,就像上面的,第一個是集合的名稱,其實這纔是mysql中的表名的意思,第二個參數就是你的Schema的表結構名稱。下一步就是通過這個數據集model創建一個實體(參數是一個json對象,key值需要對應Schema)形成一個Entity,接着就可以去用Entity的save方法去保存數據。

TestModel.find({age:{$gt:18}},function(error,doc){

    console.log(doc);

    });//查詢年齡小於18的

    TestModel.find({age:{$lt:60}},function(error,doc){

    console.log(doc);

    })//查詢年齡大於60的

    TestModel.find({age:{$gt:18,"$lt":60}},function(error,doc){

    console.log(doc);

    });//查詢年齡大於18小於60的

    TestModel.find({age:{$ne:24}},function(error,doc){

    console.log(doc);

    });//查詢age不等於24的所有數據

    TestModel.find({age:{$ne:'tom'},age:{$gte:18}},function(error,doc){

    console.log(doc);

    });//查詢name不等於tom、age>=18的所有數據

    TestModel.find({age:{$in:[20,30]}},function(error,doc){

    console.log(doc);

    });//查詢age等於20,30的所有數據

    TestModel.find({age:{$in:[24,25,27]}},function(error,doc){

  console.log(doc);

    });

    TestModel.find({$or:[{name:"yaya"},{age:28}]},function(error,doc){

    console.log(doc);

    });//查詢name爲yaya或age爲28的全部文檔

    TestModel.find({name:{$exists:true}},function(error,doc){

    console.log(doc);

    });//查詢所有存在name屬性的文檔

    TestModel.find({telephone:{$exists:false}},function(error,doc){

    console.log(doc);

    });//查詢所有不存在telephone屬性的文檔

這是一些查詢的語句,還有update方法和delete的方法,自己可以搜索一下,原理就是這樣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章