Mongoose基本使用
Mongoose
Mongoose是一个对象文档模型库,官网
Mongoose方便使用代码操作mongodb
数据库
参考:MongoDB基础入门, MongoDB官网,MongoDB中文网
使用示例:
//1. 安装 mongoose
// npm install mongoose
//2. 导入 mongoose
const mongoose = require('mongoose');
//3. 连接数据库
mongoose.connect('mongodb://127.0.0.1:27017/bilibili');
//4. 设置连接回调
//连接成功
mongoose.connection.on('open', () => {
console.log('连接成功');
//5. 创建文档结构对象
let BookSchema = new mongoose.Schema({
title: String,
author: String,
price: Number
});
//6. 创建文档模型对象
let BookModel = mongoose.model('book', BookSchema);
//7. 插入文档
BookModel.create({
title: '西游记',
author: '吴承恩',
price: 19.9
},
(err, data) => {
if (err) throw err;
//输出 data 对象
console.log(data);
//8. 断开连接
mongoose.disconnect();
});
});
//连接出错
mongoose.connection.on('error', () => {
console.log('连接出错~~');
})
//连接关闭
mongoose.connection.on('close', () => {
console.log('连接关闭');
})
字段类型
文档结构可选的常用字段类型列表
类型 | 描述 |
---|---|
String | 字符串 |
Number | 数字 |
Boolean | 布尔值 |
Array | 数组,也可以使用 [] 来标识 |
Date | 日期 |
Buffer | Buffer 对象 |
Mixed | 任意类型,需要使用 mongoose.Schema.Types.Mixed 指定 |
ObjectId | 对象 ID,需要使用 mongoose.Schema.Types.ObjectId 指定 |
Decimal128 | 高精度数字,需要使用 mongoose.Schema.Types.Decimal128 指定 |
字段值验证
Mongoose
有一些内建验证器,可以对字段值进行验证
{
title: {
type: String,
required: true // 设置必填项
},
author: {
type: String,
default: '匿名' //默认值
},
gender: {
type: String,
enum: ['男','女'] //设置的值必须是数组中的
},
username: {
type: String,
unique: true // 唯一值 unique 需要 重建集合 才能有效果
},
}
CURD
数据库的基本操作包括四个,增加(create),删除(delete),修改(update),查(read)
// 插入一条
SongModel.create({
title:'给我一首歌的时间',
author: 'Jay'
},
function(err, data){
//错误
console.log(err);
//插入后的数据对象
console.log(data);
});
// 批量插入
PhoneModel.insertMany([
{
brand:'华为',
color:'灰色',
price:2399,
tags:['电量大','屏幕大','信号好']
},
{
brand:'小米',
color:'白色',
price:2099,
tags:['电量大','屏幕大','信号好']
}],
(err,data)=>{
if(err) throw err;
console.log('写入成功');
mongoose.connection.close();
})
// 删除一条数据
SongModel.deleteOne(
{_id:'5dd65f32be6401035cb5b1ed'},
function(err){
if(err) throw err;
console.log('删除成功');
mongoose.connection.close();
}
)
// 批量删除
SongModel.deleteMany({author:'Jay'},
function(err){
if(err) throw err;
console.log('删除成功');
mongoose.connection.close();
})
// 更新一条数据
SongModel.updateOne({author: 'JJ Lin'}, {author: '林俊杰'},
function (err) {
if(err) throw err;
mongoose.connection.close();
})
// 批量更新数据
SongModel.updateMany({author: 'Leehom Wang'}, {author: '王力宏'}, function (err) {
if(err) throw err;
mongoose.connection.close();
})
// 查询一条数据
SongModel.findOne({author: '王力宏'},
function(err, data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
})
//根据 id 查询数据
SongModel.findById('5dd662b5381fc316b44ce167',
function(err, data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
})
//不加条件查询
SongModel.find(function(err, data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});
//加条件查询
SongModel.find({author: '王力宏'},
function(err, data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});
条件控制
在mongodb
不能 > < >= <= !==
等运算符,需要使用转义符
>
使用$gt
<
使用$lt
>=
使用$gte
<=
使用$lte
!==
使用$ne
b.students.find({id:{$gt:3}});
id号比3大的所有的记录
逻辑运算
$or
逻辑或的情况
db.students.find({$or:[{age:18},{age:24}]});
$and
逻辑与的情况
db.students.find({$and: [{age: {$lt:20}}, {age: {$gt: 15}}]});
正则匹配
条件中可以直接使用 JS 的正则语法,通过正则可以进行模糊查询
db.students.find({name:/imissyou/});
返回指定字段
//0:不要的字段
//1:要的字段
SongModel.find()
.select({_id:0,title:1})
.exec(function(err,data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});
数据排序
//sort 排序
//1:升序
//-1:倒序
SongModel.find()
.sort({hot:1})
.exec(function(err,data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});
数据截取
//skip 跳过 limit 限定
SongModel.find()
.skip(10)
.limit(10)
.exec(function(err,data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
})
标签:基本,console,log,err,mongoose,connection,Mongoose,使用,data
From: https://www.cnblogs.com/wdszh/p/17510340.html