mongoDB数据库之使用第三方包mongoose来操作mongoDB数据库
1.先下载mongoose第三方包
npm install --save mongoose
2.新建一个mongoose.js测试一下
//1.引包
var mongoose = require('mongoose');
//连接 mongoDB数据库
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true});
//mongoDB是动态的,非常灵活,只需要在代码中设计数据库就可以了
//设计数据库
//表名cats,表中存储name数据,类型为iestring
var Cat = mongoose.model('Cat', { name: String });
//实例化一个Cat
var kitty = new Cat({ name: 'Zildjian' });
//持久化保存kitty实例
kitty.save(function(err){
if(err){
console.log(err)
}else{
console.log('meow')
}
})
3.开启mongodb服务,在开启前要在所处盘符根目录下新建data/db文件夹
[外链图片转存失败(img-akLZRuNl-1564741661345)(C:\Users\14331\AppData\Roaming\Typora\typora-user-images\1564296040176.png)]
[外链图片转存失败(img-bBz6AwIL-1564741661348)(C:\Users\14331\AppData\Roaming\Typora\typora-user-images\1564296126974.png)]
mongod //开启服务
4.新开一个cmd终端,使用mongo连接数据库
[外链图片转存失败(img-Lw9hnK1t-1564741661350)(C:\Users\14331\AppData\Roaming\Typora\typora-user-images\1564296013518.png)]
mongo //连接数据库
show dbs//查看所有数据库
db //查看当前操作数据库
show collections //查看数据表集合
db.cats.find() //查看数据
[外链图片转存失败(img-azlLVre5-1564741661351)(C:\Users\14331\AppData\Roaming\Typora\typora-user-images\1564296333447.png)]
2.mongoDB数据库的基本概念
- 数据库(可以有多个数据库)
- 集合(表,一个数据库中可以有多个表)
- 文档 (记录,必须是对象类型的,一个集合中可以有多个文档)
{
qq:{
users:[
{name : '李四',age: 15},
{name : '李四',age: 15},
{name : '李四',age: 15},
{name : '李四',age: 15},
{name : '李四',age: 15},
{name : '李四',age: 15},
···
],
products:[
],
···
},
taobao:{
},
baidu{
}
}
3.官方指南
3.1设计Schema发布model
var mongoose = require('mongoose')
var Schema = mongoose.Schema
//1.连接数据库,指定的数据库若不存在,则mongoDB会自动创建
mongoose.connect('mongodb://localhost/itcast')
//2.设计表结构
//字段名称就是表结构中的属性名称
//约束的目的是为了数据的完整性,不要有脏数据
var userSchema = new Schema({
username: {
type: String,
required: true //必须有
},
password:{
type: String,
required: true
},
emaill: {
type: String
}
})
//3.将表结构发布为模型
//mongoose.model方法用于一个model
//第一个参数:传入一个大写字母单数名词字符串用于表示
//返回值:模型构造函数
var User = mongoose.model('User',userSchema)
//4.当我们有了模型构造函数之后,就可以使用这个构造函数对users集合中的数据为所欲为了
3.2增加数据
var admin = new User({
"username":"李顺",
"password":"123",
"emaill":"admin@qq.com"
})
admin.save(function(err,ret){
if(err){
console.log('保存失败');
}else{
console.log('保存成功');
console.log(ret);
}
})
3.3查询数据
//查询所有数据,返回数组
User.find(function(err,ret){
if(err){
console.log('查询失败');
}else{
console.log('查询成功');
console.log(ret);
}
})
//按条件查询,返回数组
User.find({
username : '李顺'
},
function(err,ret){
if(err){
console.log('查询失败');
}else{
console.log('查询成功');
console.log(ret);
}
})
//按条件查询单个,返回单个对象
User.findOne({
username : '李顺'
},
function(err,ret){
if(err){
console.log('查询失败');
}else{
console.log('查询成功');
console.log(ret);
}
})
3.4删除数据
User.remove({username : '郑孟浩'},
function(err,ret){
if(err){
console.log('删除失败')
}else{
console.log('删除成功')
}
})
3.5更新数据
User.findByIdAndUpdate('5d3d94bbfb8bdd286848ee18',{//第一个参数是id
password:'778899'
},function(err,ret){
if(err){
console.log('更新失败')
}else{
console.log('更新成功')
}
})