1、mongoose中为我们提供了几个新的对象:
1). Schema
约束(通过Schema设计文档[表]结构的同时约束数据)
2). Model
模型 | 表 | 集合
来操作具体的数据
3). document
具体的一条一条记录
2、mongoose操作mongodb的步骤:
1). 开启mongodb服务
2). 下载mongoose包
npm i mongoose -S
let mongoose = require('mongoose')
3). 连接数据库
mongoose.connect('mongodb://localhost/mongoose_demo',{ useNewUrlParser:true })
4). 定义Schema
5). 根据Schema创建Model对象
6). 通过Model进行CRUD操作
3、mongoose简单实例:
mongoose_demo.js:
// 引入mongoose包
const mongoose = require('mongoose')
//连接数据库
//console.log(typeof mongoose);
//mongoose.connect( url,options )
//默认27017可以省略
//useNewUrlParser这个属性会在url里识别验证用户所需的db
//mongodb://localhost:27017/数据库 必须指定数据库名
mongoose.connect('mongodb://localhost/mongoose_demo',{ useNewUrlParser:true })
//连接成功以后,mongoose对象有一个connection 属性,它可以兼听数据库的打开与关闭事件
//open 事件 close 事件
mongoose.connection.on( 'open',()=>{
console.log( 'success' )
})
mongoose.connection.on( 'close',()=>{
console.log( 'close' )
})
//mongodb上有 关闭数据库的方法
mongoose.disconnect()
4、通过mongoose操作数据库:
mongoose_opt.js
//引入mongoose包
const mongoose = require('mongoose')
//连接数据库
mongoose.connect('mongodb://localhost/mongoose_demo',{ useNewUrlParser:true })
var Schema = mongoose.Schema
//console.log(Schema);
//设计用户表|设计用表约束
// 使用 Schema构造函数 创建一个userSchema 实例对象
var userSchema = new Schema({
username:String,
age:Number,
sex:{
type:String,
default:'男'
}
})
//console.log(userSchema);
// 创建表 通过约束创建表
//console.log(mongoose.model);
//mongoose.model( 表名|集合名,Schema约束的实例 )
let userModel = mongoose.model('users',userSchema)
//console.log(typeof userModel);
// 无论添加成功与否,都会执行回调函数
userModel.create({
username:'小王',
age:18,
sex:'女'
}, function (err) {
console.log(err);
if( !err ){
console.log('ok')
}
})
5、Model.create( doc[s],callback )方法:
Model.create.js
//引入mongoose包
const mongoose = require('mongoose')
//连接数据库
mongoose.connect('mongodb://localhost/mongoose_demo',{ useNewUrlParser:true })
var Schema = mongoose.Schema
var userSchema = new Schema({
username:String,
age:Number,
sex:{
type:String,
default:'男'
}
})
let userModel = mongoose.model('user',userSchema)
Model.create( doc[s],callback )
userModel.create([
{"username":"小张",age:15,sex:"女"},
{"username":"小明",age:20,sex:"男"},
{"username":"tom",age:15,sex:"女"},
{"username":"jack",age:21},
], function (err) {
if(!err) return console.log('ok')
})
6、Model.find()方法:
const mongoose = require('mongoose')
mongoose.connect('mongodb://127.0.0.1:27017/mongoose_demo',{ useNewUrlParser:true })
const userSchema = new mongoose.Schema({
username:String,
age:Number,
sex:{
type:Number,
default:1 // {1:男,2:女 }
},
oldEnough:Boolean
})
const userModel = mongoose.model( 'user',userSchema )
* Model.find(conditions, projection, options, callback) 是一个数组
* conditions 条件
[projection] 要展示的字段
[options] 查询选项 排序 限制 跳过 sort limit skip
[callback] «Function» 回调函数,查找到的结果 从回调函数当中获取
userModel.find({}, (err,docs)=>{
console.log( docs )
})
// 查询性别为女的
userModel.find({ sex:2 }, (err,docs)=>{
console.log( docs )
})
//显示对应字段
//两种写法
//{ username:1,age:1,_id:0 } " username sex"
userModel.find({ sex:2 },{ username:1,age:1,_id:0 }, (err,docs)=>{
console.log( docs )
})
/*显示对应字段的字符串形式写法
userModel.find({ sex:2 },'username sex -_id', (err,docs)=>{
console.log( docs )
})
userModel.find(
{},
{},
{
sort:{age:-1},
limit:2,
skip:3
},
function (err,docs) {
console.log(docs);
})