还觉得数据库难学?看看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('更新成功')
    }
})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章