還覺得數據庫難學?看看Mongoose

Mongoose

  • 官方-中文:https://mongoosejs.com/
  • 官方指南:http://www.mongoosejs.net/docs/guide.html
  • 官方API文檔:http://www.mongoosejs.net/docs/api.html

MongoDB數據庫的基本概念

  • 數據庫
  • 集合
    • 一個數據庫中可以有多個集合(表)
  • 文檔
    • 一個集合中可以有多個文檔(表記錄)
    • 文檔結構很靈活,沒有任何限制
  • MongoDB非常靈活,不需要像MySQL一樣先創建數據庫、 表、設計表結構
    • 在這裏只需要:當你需要插入數據的時候,只需要指定往哪個數據庫的哪個集合操作就可以了
    • 一切都由MongoDB來幫你自動完成建庫建表這件事兒
{
    qq: {	// 對應數據庫
        users: [	//集合,對應mysql中的表
            {name: '張三', age: 15},
            {name: '張三', age: 15},
            {name: '張三', age: 15},
            {name: '張三', age: 15},
            {name: '張三', age: 15},
            ...
            {},
            {}
        ],
        products: [	
            
        ]
    },
    taobao: {
        
    },
    baidu: {
        
    }
}

安裝

npm i mongoose

快速使用:

const mongoose = require('mongoose');
// 連接數據庫,沒有會自動創建
mongoose.connect('mongodb://localhost/test');

// 創建一個模型--設計數據庫
// MongoDB是動態的,非常靈活,只需在代碼中設計數據庫就可以
const Cat = mongoose.model('Cat', { name: String });
// 實例化一個 Cat
const kitty = new Cat({ name: 'Zildjian' });

// 持久化保存一個 kitty 實例
kitty.save(function(err){
    if(err)
        console.log(err)
    else
		console.log('meow')
})

官方指南:

var mongoose = require('mongoose')
// 獲取結構對象
var Schema = mongoose.Schema
// 1.連接數據庫,沒有會自動創建
mongoose.connect('mongodb://localhost/test');

// 2.設計集合結構(表結構)
var userSchema = new Schema({
    username: {
        type: String,
        required: true //必須有
    },
    password: {
        type: String,
        required: true
    },
    email: {
        type: String
    }
})

// 3.將文檔結構發佈爲模型
// mongoose. model方法就是用來將一個架構發佈爲model
// 第一個參數:傳入一個大寫名詞單數字符串用來表示你的數據庫名稱
	//mongoose會自動將大寫名詞的字符串生成小寫複數的集合名稱
// 第一個參數:架構Schema
	// 返回值:模型構造函數

// 4.使用模型構造函數操作users集合
var User = mongoose.model('User', userSchema)


新增數據

var admin = new User({
	username: 'admin',
    password: '123',
    email: '[email protected]'
})

admin.save(function(err, ret){
    if(err)
        console.log('保存失敗')
   	else{
        console.log('保存成功')
        console.log(ret)
    }
})

查詢數據

查詢所有:

// 查詢所有
admin.find(function(err, ret){
    if(err)
        console.log('查詢失敗')
   	else{
        console.log(ret)
    }
})

條件查詢所有:

// 按條件查詢
admin.find({
    username: 'admin'	// 條件查詢 username = admin 的
}, function(err, ret){
    if(err)
        console.log('查詢失敗')
   	else{
        console.log(ret)
    }
})

條件查詢單個:

// 按條件查詢第一個
admin.findOne({
    username: 'zs'	// 返回所有滿足 username = zs 的,取第一個
}, function(err, ret){
    if(err)
        console.log('查詢失敗')
   	else{
        console.log(ret)
    }
})

// id 查詢
admin.findById({
    id: id
},function(err, ret){
    if(err)
        console.log('查詢失敗')
   	else{
        console.log(ret)
})

刪除數據

admin.remove({
    username: 'admin'	// 條件刪除 username = admin 的
}, function(err, ret){
    if(err)
        console.log('刪除失敗')
   	else{
        console.log('刪除成功')
    }
})

更新數據

根據條件更新所有:

Model.update(conditions, doc, [options],[callback])

根據指定條件更新一個:

Model.findOneAndUpdate([conditions], [update], [options], [callback])

根據id更新一個

admin.findByIdAndUpdate('5a001b23d219eb00c8581184', {	// 將指定id對象的password更改爲 '456
   password: '456' 
}, function(err, ret){
    if(err)
        console.log('更新失敗')
   	else{
        console.log('更新成功')
    }
})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章