1. 程式人生 > >MongoDB資料庫操作---mongoose操作

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的操作大致也就這些,拜拜咯,加油加油!!!