MongoDB數據庫操作---mongoose操作

Mongoose認知概念

Mongoose是MongoDB的一個對象模型工具,其可以在一部環境下執行。同時它也是針對MongoDB操作的一個隊形模型庫,封裝了MongoDB對文檔的一些增刪改查等常用方法,讓NodeJS操作MongoDB數據庫變得更加靈活簡單。

Mongoose的使用

安裝

npm install mongoose

數據庫鏈接

好吧,爲了防止說起來比較不太好說,萍子在這裏先推銷一波,前兩天我寫過一篇MongoDB在終端上操作的博文,需要的可以點擊下面這個鏈接MongoDB數據庫操作—終端命令操作,然後需要說明的是因爲終端操作和mongoose的操作差距不大,在這篇博文中,我就不再很詳細的介紹了,望見諒,小夥伴們需要的如果這篇博文找不到的,可以去那篇去看看,謝謝。
好了,接下來開始今天的內容,慣例上代碼配解釋:

//引入mongoose模板
var mongoose = require("mongoose");
//鏈接數據庫:其中27017是mongodb的端口號,user是要操作的數據庫的名字,在上篇博文中的截圖中有體現哦
mongoose.connect("mongodb://localhost:27017/user");
var db = mongoose.connection;
//鏈接失敗
db.on("error",function(error){
    if(error){
        console.log(error);
    }
})
//鏈接成功
db.on("open",function(){
    console.log("數據庫鏈接成功");
})

哈哈,如果你操作到了以上這一步,就說明數據庫已經連接成功了哦,接下來我們再來看一點配置。

設定數據庫的基本架構

原因:就像我們在上一篇博文提到的那樣,MongoDB數據庫結構比較靈活,因此我們可以提前設定好數據庫的架構,防止內部紊亂,不利於存取。
設定架構又稱爲定義數據庫集合的數據模型,定義了字段名和字段的類型以及默認值等等。
其中,字段的類型有:字符串、日期型、數值型、布爾型、null、數組、內嵌文檔等。

var Schema = mongoose.Schema({
    name:{type:String},//定義的字段和字段類型
    age:{type:Number,default:22},//default是默認值的設置,可選
},{
    collection:"mytest"//操作的是數據庫裏的集合名稱
})
//model是用Schema構造生成的模型,除了Schema定義的數據庫骨架外,還具有數據庫操作的行爲,類似於管理數據庫屬性、行爲的類
//參數:集合名稱,集合數據模型
var Model = db.model("mytest",Schema);

數據庫操作

這裏需要說明的是,mongoose的操作和命令行的操作大同小異,這裏我就不再過多的贅述,把方法等寫在這裏,如果不曉得怎麼用的小夥伴們可以去看一眼上篇博文,[MongoDB數據庫操作—終端命令操作],謝謝大家。

增加數據

在終端命令行裏的添加用的是insert關鍵字,在這裏我們用的是create關鍵字

Model.create({name:"河神",age:23},function(err,data){
    if(err){
        return console.log(err);
    }else{
        console.log(data);//返回添加數據,會自動生成一個__v,用來標識是create添加的
    }
})

刪除數據

刪除的關鍵字跟終端操作用到的一樣,都是remove

Model.remove({name:"萍子"},function(err,data){
    if(err){
        console.log(err);
    }else{
        console.log(data);//返回結果跟終端一樣
    }
})

修改數據

更改數據的關鍵字在這裏也還是update

Model.update({name:"萍子"},{$set:{age:18}},{multi:true},function(err,data){
    if(err){
        console.log(err);
    }else{
        console.log(data);//返回結果跟終端一樣
    }
})

查詢數據

同樣的查詢用的也還是find,但是不變的還有我的吐槽:哎呀媽呀,這個數據庫的查詢操作真的是超級多的情況,汗顏汗顏……
下面我大致列出來幾種,然後一一備註出來供小夥伴們參考

find({條件},{字段},fun)
//取所有的
Model.find({},{},function(err,data){
    if(err){
       console.log(err);
    }else{
       console.log(data);
    }
})

//查詢年齡小於28的,且只查詢名字
Model.find({age:{$lt:28}},{name:1},function(err,data){
    if(err){
       console.log(err);
    }else{
       console.log(data);
    }
})

//年齡大於25的
Model.find({age:{$gt:25}},null).then((data) => {
    console.log(data);
}).catch((err) => {
    console.log(err);
})

//姓王的或者姓李的
Model.find({$or:[{name:/^王/},{name:/^李/}]}).then((data)=>{
    console.log(data);
}).catch((err)=>{
    console.log(err);
})

//分頁/遊標操作:
//按年齡降序排列
Model.find({},{},{sort:{age:-1}},function(err,data){
   if(err){
        console.log(err);
    }else{
        console.log(data);//返回符合的數據內容
    }
})
//另一種寫法:
Model.find().sort({age:-1}).then(function(data){
    console.log(data);
}).catch(function(err){
    console.log(err);
})

//排序查詢:按年齡倒序排列,跳過前兩條查詢兩條數據
Model.find({},{},{sort:{age:-1},skip:2,limit:2},function(err,data){
   if(err){
       console.log(err);
    }else{
        console.log(data);
    }
})

好了,呼呼,mongoose的對MongoDB的操作大致也就這些,拜拜咯,加油加油!!!

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