创建文件夹(node.js环境下)
初始化包
npm init -y
下载mongoose
cnpm install mongoose
创建一个文件(db.js),并写入代码:
// 引入
const mongoose=require('mongoose');
// 链接数据库
mongoose.connect('mongodb://localhost/cc');
// 数据库链接成功,执行下面的箭头函数
mongoose.connection.on('connected',()=> console.log('连接成功'));
// 数据库链接失败,执行下面的箭头函数,打印错误信息
mongoose.connection.on('error',(err)=> console.log(err));
// 上面链接数据库的代码只需要执行一次
右键----run code----链接成功:
E:\VSCode>node "e:\VSCode\Nodejs\24-Day10\02-mongooseDemo\db.js"
(node:7096) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to
MongoClient.connect.
(node:7096) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.
连接成功
require('./db');
const mongoose=require('mongoose');
const Schema=mongoose.Schema;
// 定义集合里面的字段以及字段类型
let StudentSchema=new Schema({
name: String,
age: Number,
score: Number
});
// 定义Model
// 参数1:对应的数据库中的集合名称,会自动加上s。如果没有这个数据库集合会自动创建。
// 参数2:Schema,用来封装查询的结果。
let Student=mongoose.model('student',StudentSchema);
// 暴露出去,给别的地方使用,避免重复定义
module.exports=Student;
const Student = require('./students');
// 保存学生
function insert() {
// 根据Model 创建 Document 对象
let student = new Student({
name: 'cc',
age: 22,
score: 100
});
student.save((err, doc) => {
if (err) {
console.log(err);
} else {
console.log(doc);
}
});
}
insert();
运行成功,在数据库里刷新就可以看到插入了新的数据了
根据id修改:
// 根据id修改
function updateById() {
let id = '5f59d32af7e2621b3c01eae7';
let update = {
name: 'xx', age: 18 };
Student.findByIdAndUpdate(id, update, (err, res) => {
if (err) {
console.log(err);
} else {
console.log(res);//返回修改前的数据
}
});
}
updateById();
根据条件修改:
// 根据条件修改
function updateByName() {
let conditions = {
name: 'xx' };
let update = {
name: '逍遥', age: 22 };
let options = {
multi: true }
Student.update(conditions, update, options, (err, res) => {
if (err) {
console.log(err);
} else {
console.log(res);
}
});
}
updateByName();
根据id删除:
// 根据id删除
function removeById() {
let id = '5f59d32af7e2621b3c01eae7';
Student.findByIdAndRemove(id, (err, res) => {
if (err) {
console.log(err);
} else {
console.log(res);
}
});
}
removeById();
根据id查询文档:
// 根据id查询文档
function findById() {
let id = '5f59815c0707eefefb7fd692';
Student.findById(id, (err, res) => {
if (err) {
console.log(err);
} else {
console.log(res);
}
});
}
findById();
查询所有的:
// 查询所有的
function findAll() {
let conditions = {
};
// Student.find(conditions,(err,res)=>{
// if(err){
// console.log(err);
// }else{
// console.log(res);
// }
// });
Student.find(conditions)
.exec((err, res) => {
if (err) {
console.log(err);
} else {
console.log(res);
}
});
}
findAll();
根据分数范围查询:
// 根据分数范围查询:
function findByMinScoreAndMaxScore() {
let minScore = 90;
let maxScore = 99;
let conditions = {
score: {
$gte: minScore, $lte: maxScore } };
Student.find(conditions, (err, res) => {
if (err) {
console.log(err);
} else {
console.log(res);
}
});
}
findByMinScoreAndMaxScore();
名字模糊匹配有r的:
// 名字模糊匹配有r的
function findLikeName(){
let conditions = {
name:{
$regex:/r/i} };
Student.find(conditions, (err, res) => {
if (err) {
console.log(err);
} else {
console.log(res);
}
});
}
findLikeName();
查分数在90-100,名字有‘二’字的:
// 查分数在90-100,名字有‘二’字的
function findPerson(){
let conditions = {
score:{
$gte:90,$lte:100}, name:{
$regex:/二/i} };
Student.find(conditions, (err, res) => {
if (err) {
console.log(err);
} else {
console.log(res);
}
});
}
findPerson();
分页查询:
// 分页查询
function page(){
let currentPage=2;
let pageSize=2;
let sorts={
score:-1};//降序
let condition={
};//条件
Student.find(condition).sort(sorts).skip((currentPage-1)*pageSize).limit(pageSize)
.exec((err, res) => {
if (err) {
console.log(err);
} else {
console.log(res);
}
});
}
page();