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('更新成功')
}
})