MongoDB
的基本使用
1.MongoDB
的基本概念
MongoDB是一个基于文档的通用分布式数据库,专为现代应用程序开发人员和云时代而构建。
- 数据库(database)
- 集合(collection)
- 文档(document)
大致存储结构如下:(类似json
)
{
database1: {
collection1: [
{ document object 1 },
{ document object 2 },
...
],
collection2: [
...
],
...
},
database2: {
...
},
...
}
2.安装并配置环境变量
下载地址:https://www.mongodb.com/download-center/community
3.基本命令
- 查看版本信息
Mongod --version
- 启动服务
Mongod
- 连接数据库
Mongo
- 退出连接
exit
- 查看所有数据库(不会显示没有数据的数据库)
show dbs
- 使用指定数据库 DbName (无则自动创建)
use DbName
- 查看当前操作数据库(默认为 test )
db
- 删除数据库
db.dropDatabase()
- 查看所有集合
show collections
- 查看集合 CName 中的所有文档
db.CName.find()
# pretty() 方法以格式化的方式显示文档
db.CName.find().pretty()
- 删除集合 CName
db.CName.drop()
- 向集合 CName 中插入文档
# 插入一条
db.CName.insertOne(ducment)
# 插入多条
db.CName.instert(ducment)
# 使用 save() 时,如果不指定 _id 字段则相当于 insert(), 指定 _id 字段贼会更新该 _id 字段的数据
db.CName.save(ducment)
- 更新集合 CName 中的文档
# criteria:查询条件
# objNew:更新的对象和一些更新的操作符
# upsert:如果不存在该记录,是否插入objNew, 默认为 true
# multi: 是否更新所有符合查询条件的记录,默认为 false
db.CName.update(criteria, objNew, upsert, multi)
- 删除集合 CName 中的文档
# query: 查询条件
# justOne:是否只删除一个文档
# writeConcern: 抛出异常的级别
db.CName.remove(query, {justOne:<Boolean>, writeConcern:<document>})
- …
4.使用 Node
操作 MongoDB
(1)使用官方的 mongodb
包
网址:https://github.com/mongodb/node-mongodb-native
(2)使用第三方的 mongoose
来操作
mongoose
是基于官方mongodb
的再次封装
操作代码示例
// 1.导入模块
const mongoose = require('mongoose')
const Schema = mongoose.Schema
// 2.连接数据库
mongoose.connect('mongodb://localhost:27017/mydb')
// 3.设计文档结构
const userSchema = new Schema({
username: {
type: String, // 字段类型
required: true // 非空约束
},
password: {
type: String,
required: true
},
email: {
type: String
}
})
// 4.将文档结构发布为模型
// mongoose.model()
// 第一个参数: 一个大写名称单数字符串(mongoose 会自动将大写名词的字符串转换为小写复数形式的集合名称)
// 第二个参数:Schema(模式,架构)
// 返回值:模型构造函数
const User = mongoose.model('User', userSchema)
// 5.数据操作
// 添加并保存数据
let admin = new User({
username: 'admin',
password: 'admin@123',
email: '1234567@qq.com'
})
admin.save(function (err, ret) {
if (err) {
return console.log(err)
}
console.log(ret)
})
// 查询所有数据
User.find(function (err, ret) {
if (err) {
return console.log(err)
}
console.log(ret)
})
// 查询满足条件的所有数据
User.find({ username: 'admin' }, function (err, ret) {
if (err) {
return console.log(err)
}
console.log(ret)
})
// 查询满足条件的第一条数据
User.findOne({ username: 'admin' },function (err, ret) {
if (err) {
return console.log(err)
}
console.log(ret)
})
// 还有 findById()
// 删除数据
/**
删除的方法很多
remove()
deleteOne()
deleteMany()
findByIdAndDelete()
findByIdAndRemove()
findOneAndDelete()
...
*/
// 删除所有 username 为 admin 的数据
User.remove({ username: 'admin'}, function (err, ret) {
if (err) {
return console.log(err)
}
console.log(ret)
})
...
// 更新数据
/*
方法也很多
update()
updateOne()
updateMany()
findByIdAndUpdate()
findOneAndUpdate()
*/
User.update({ username: 'admin' }, { password: 'admin@me'}, function(err, ret) {
if (err) {
return console.log(err)
}
console.log(ret)
})
...
更多方法参考mongoose官网api:https://mongoosejs.com/docs/api/model.html