Nodejs-mongodb,mongoose的CRUD
前言
- 设计集合结构(表结构)
- 字段名称就是表结构的属性名称
- 约束的目的就是为了保证字段的完整性,不要有脏数据
官方案例
var mongoose = require('mongoose');//官方案例
var Schema = mongoose.Schema;
var blogSchema = new Schema({
title: String,
author: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
小栗子
var mongoose = require('mongoose')
var Schema = mongoose.Schema
//连接数据库
//指定链接的的数据库不需要存在,当你插入第一条数据后就会被自动创建出来
mongoose.connect('mongodb://localhost:27017/itcast');
//设计文档结构(表结构)
var userSchema = new Schema({
username: {
type: String,
require: true //表示必须有
},
password: {
type: String,
require: true
},
email: {
type: String
}
})
-
将文档结构发布为模型
-
mongoose.model() 是用来讲一个架构发布为model的
-
第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称,mongoose会自动将大写单数名词字符串
-
生成 小写复数 的集合名称 例如这里的 User => users集合名称
-
第二个参数:架构的名称
-
返回值 模型构造函数
var User = mongoose.model(‘User’, userSchema)
-
-
增加数据
- 先new 一个数据对象
- 使用模型.save()添加
var admin = new User({
username: 'zx',
password: '321',
email: 'zx@ad.com'
})
admin.save(function(err,ret) {
if (err) {
console.log('保存失败');
} else {
console.log('保存成功');
console.log(ret);
}
})
- 查询
User.find(function (err,ret) { //查询所有
if (err) {
console.log('查询失败');
} else {
console.log(ret)
}
})
User.find({ //按条件查询 第一个参数 放入一个 对象 "条件" 即可
username: 'zx'
},
function (err, ret) {
if (err) {
console.log('查询失败');
} else {
console.log(ret)
}
})
ps :find() 无论 怎样都会返回一个数组
User.findOne({ //插入条件后 只会返回一个对象,如果没有条件默认返回第一条数据
username: 'zx'
},
function (err,ret) {
if (err) {
console.log('查询失败');
} else {
console.log(ret);
}
}
)
- 更新数据
User.findByIdAndUpdate(
'5c2f01c67677e410308a223a', {
username: 'updata后的admin',
password: '666666'
},
function (err, ret) {
if (err) {
console.log('更新失败');
} else {
console.log('更新成功');
console.log(ret);// 这里是返回更新前的对象内容
}
}
)
- 删除数据
User.remove({
username: 'zx'
},
function (err, ret) {
if (err) {
console.log('失败');
} else {
console.log('成功');
console.log(ret);
}
})