Mongodb数据库
Mongodb数据库
下载安装与启动
下载地址: https://www.mongodb.com/try/download/community
建议选择zip类型,通用性更强
配置步骤如下:
1>将压缩包移动到 C: \Program Files 下,然后解压
2>创建C:\dataldb目录,mongodb 会将数据默认保存在这个文件夹
3>以mongodb 中bin目录作为工作目录,启动命令行
4>运行命令mongod
命令行交互
命令行交互一般是学习数据库的第一步,不过这些命令在后续用的比较少,所以大家了解即可
数据库命令
1.显示所有的数据库
show dbs
2.切换到指定的数据库,如果数据库不存在会自动创建数据库
use 数据库名
3.显示当前所在的数据库
db
4.删除当前数据库
use 库名
db .dropDatabase()
集合命令
1.创建集合
db.createCollection( '集合名称')
2.显示当前数据库中的所有集合
show collections
3.删除某个集合
db.集合名.drop( )
4.重命名集合
db.集合名.renameCollection( ' newName ' )
文档命令
1.插入文档
db.集合名.insert(文档对象);
2.查询文档
db .集合名.find(查询条件)
_id 是 mongodb自动生成的唯一编号,用来唯一标识文档
3.更新文档
db.集合名.update(查询条件,新的文档)
db.集合名.update( {name : '张三'},{$set : {age : 19}})
4、删除文档
db.集合名.remove(查询条件)
mongoose
安装:
npm i mongoose
//安装npm i mongoose
//导入 mongoose
const mongoose = require('mongoose')
//连接 mongodb 服务
//mongoose.connect('协议://ip地址:端口号(mongodb默认27017)/数据库名称(没有则自动建)')
mongoose.connect('mongodb://127.0.0.1:27017/nodejs')
//设置连接成功的回调
//once 事件回调函数只执行一次
mongoose.connection.once('open', () => {
console.log('连接成功');
})
//设置连接错误的回调
mongoose.connection.on('error', () => {
console.log('连接错误');
})
//设置连接关闭的回调
mongoose.connection.on('close', () => {
console.log('连接关闭');
})
//关闭 mongodb的连接
// setTimeout(() => {
// mongoose.disconnect()
// }, 2000)
插入文档
const mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/nodejs');
mongoose.connection.once('open', async () => {
//创建文档的结构对象
//设置集合中文档的属性以及属性值的类型
const BookSchema = new mongoose.Schema({
name: String,
author: String,
price: Number
});
//创建模型对象对文档操作的封装对象
const BookModel = mongoose.model('books', BookSchema);
//通过 'BookModel.create()' 方法向数据库中插入一条数据,表示一本书的信息
try {
const book = await BookModel.create({
name: '西游记',
author: '吴承恩',
price: 19.9
});
console.log(book);
} catch (error) {
console.error(error);
}
//关闭 mongodb的连接(项目运行过程中,不会添加该代码)
mongoose.disconnect()
});
mongoose.connection.on('error', () => {
console.log('连接错误');
});
mongoose.connection.on('close', () => {
console.log('连接关闭');
});
字段类型

字段验证
必填项
required: true
默认值
default: '匿名'
枚举项 (不是其中的某一项就报错)
enum:['男','女','直升机']
唯一值 (要重建集合才有效)
unique:true
删除文档
const mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/nodejs');
mongoose.connection.once('open', async () => {
const BookSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
author: {
type: String,
default: '匿名'
},
price: Number,
});
const BookModel = mongoose.model('books', BookSchema);
//删除文档(一个)
try {
const result = await BookModel.deleteOne({ _id: '660cfa91634dc40f91f0c129' });
console.log(result);
} catch (error) {
console.error(error);
}
//批量删除文档
// try {
// const result = await BookModel.deleteOne({ is_hot: true });
// console.log(result);
// } catch (error) {
// console.error(error);
// }
mongoose.disconnect()
});
mongoose.connection.on('error', () => {
console.log('连接错误');
});
mongoose.connection.on('close', () => {
console.log('连接关闭');
});
更新文档
const mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/nodejs');
mongoose.connection.once('open', async () => {
const BookSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
author: {
type: String,
default: '匿名'
},
price: Number,
});
const BookModel = mongoose.model('books', BookSchema);
//更新一个
try {
const result = await BookModel.updateOne({ name: '西游记' }, { price: 19.9 });
console.log(result);
} catch (error) {
console.error(error);
}
});
mongoose.connection.on('error', () => {
console.log('连接错误');
});
mongoose.connection.on('close', () => {
console.log('连接关闭');
});
读取
const mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/nodejs');
mongoose.connection.once('open', async () => {
const BookSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
author: {
type: String,
default: '匿名'
},
price: Number,
});
const BookModel = mongoose.model('books', BookSchema);
try {
// 查找所有文档
const allBooks = await BookModel.find();
console.log(allBooks);
// 查找符合条件的单个文档
const specificBook = await BookModel.findOne({ name: '西游记' });
console.log(specificBook);
} catch (error) {
//console.error() 是一个 JavaScript 中用于输出错误消息的方法。
//它会将传入的参数以错误消息的形式打印到控制台,通常用于报告发生的错误或异常。
console.error(error);
}
});
mongoose.connection.on('error', () => {
console.log('连接错误');
});
mongoose.connection.on('close', () => {
console.log('连接关闭');
});
注
try{} 是 JavaScript 中的一个关键字,用于创建一个包含可能会发生异常的代码块,以便进行异常处理。
// try {
// // 可能会抛出异常的代码
// } catch (error) {
// // 异常处理代码
// }
条件控制
const mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/nodejs');
mongoose.connection.once('open', async () => {
const BookSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
author: {
type: String,
default: '匿名'
},
price: Number,
});
const BookModel = mongoose.model('books', BookSchema);
//价格小于20
try {
const query = BookModel.find({ price: { $lt: 20 } })
const result = await query.exec(); // 执行查询并获取结果
console.log(result);
} catch (error) {``
console.log(error);
}
});
mongoose.connection.on('error', () => {
console.log('连接错误');
});
mongoose.connection.on('close', () => {
console.log('连接关闭');
});

个性化读取
const mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/nodejs');
mongoose.connection.once('open', async () => {
const BookSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
author: {
type: String,
default: '匿名'
},
price: Number,
});
const BookModel = mongoose.model('books', BookSchema);
try {
// 设置字段
const query = BookModel.find().select({ name: 1, author: 1, _id: 0 });
const result = await query.exec(); // 执行查询并获取结果
console.log(result); // 打印查询结果
} catch (error) {
console.log(error);
}
});
mongoose.connection.on('error', () => {
console.log('连接错误');
});
mongoose.connection.on('close', () => {
console.log('连接关闭');
});


图形化管理工具
Robo(免费)
https://github.com/Studio3T/robomongo/releases
- 0
- 0
- 0
- 0
- 0
- 0