1、安装: 官网下载安装社区版
2、图形界面: compass
3、 启动MongoDB,在bin文件下打开cmd,输入如下命令
启动数据库:mongod.exe --dbpath C:\MongoDB\data\db
链接数据库:mongo.exe --port 27017
4、node.js连接mongodb
安装: cnpm i mongodb --save
const MongoClient = require('mongodb').MongoClient //mongodb客户端
const url = 'mongodb://localhost:27017'//本地启动的mongodb服务
const dbName = 'comments1'//数据库名字
MongoClient.connect(url,{
useUnifiedTopology:true,
useNewUrlParser:true
},(err,client)=>{
if(err){
console.log("mongodb 连接出错",err);
return
}
console.log("mongodb连接成功");
// 选择数据库
const db = client.db(dbName)
// 关闭
client.close()
})
5、增删改查代码示例
const MongoClient = require('mongodb').MongoClient //mongodb客户端
const url = 'mongodb://localhost:27017'//本地启动的mongodb服务
const dbName = 'comments1'//数据库名字
MongoClient.connect(url, {
useUnifiedTopology: true,
useNewUrlParser: true
}, (err, client) => {
if (err) {
console.log("mongodb 连接出错", err);
return
}
console.log("mongodb连接成功");
// 选择数据库
const db = client.db(dbName)
// 切换到指定的集合
const userCollection = db.collection("users")
//查询数据
// // sort方法中,{_id:-1} 最后插入的数据在最上方
// userCollection.find().sort({_id:-1}).toArray((err,result)=>{
// if(err){
// console.log("查询出错",err);
// return
// }
// console.log("查询成功",result);
// })
// 新增数据
// userCollection.insertOne({
// username:"shuangyue",
// password:"abc",
// age:30,
// city:"beijing"
// },(err,result)=>{
// if(err){
// console.log("插入失败",err);
// return
// }
// result.insertedCount插入的条数,result.insertedId数据的id
// console.log("插入成功",result.insertedCount,result.insertedId);
// })
// 修改数据
// userCollection.updateOne(
// { username: "zhangsan" },//修改的条件(也就是筛选要修改的数据)
// { $set: { age: 21, city: "beijing" } },//修改的内容
// (err, result)=>{
// if(err){
// console.log("修改失败",err);
// return
// }
// // result.modifiedCount修改成功的条数
// console.log("修改成功",result.modifiedCount);
// }
// )
// 删除数据
userCollection.deleteOne({ username: 'wangwu' }, (err, result) => {
if (err) {
console.error('删除数据出错', err)
return
}
console.log('删除成功')
})
// 关闭
// client.close()
})
6、使用mongoose实现模块化
安装: cnpm i mongoose --save
- 新建db文件夹,新建db.js连接数据库
// 连接数据库(mongodb 的服务端)
const mongoose = require('mongoose')
const url = 'mongodb://localhost:27017'
const dbName = 'comment2'
mongoose.set('useCreateIndex', true)
mongoose.set('useFindAndModify', true)
// 开始连接
mongoose.connect(`${url}/${dbName}`, {
useNewUrlParser: true,
useUnifiedTopology: true
})
const conn = mongoose.connection
conn.on('error', err => {
console.error('mongoose 连接出错', err)
})
module.exports = mongoose
- 在db文件夹中,新建model.js文件,定义规范
// 数据模型(规范数据格式)
const mongoose = require('./db')
// 定义 User Schema (数据规范)
const UserSchema = mongoose.Schema({
username: {
type: String,
required: true, // 必需
unique: true // 唯一,不重复
},
password: String,
age: Number,
city: String,
// 性别
gender: {
type: Number,
default: 0 // 0 - 保密,1 男,2 女
}
}, {
timestamps: true // 时间戳,自动添加文档的创建时间、更新时间
})
// 定义 User Model user对应着mongdb中的users
const User = mongoose.model('user', UserSchema)
module.exports = {
User
}
- 使用model操作数据(新增和查询)
// 使用model操作数据
const {User} = require("./model")
!(async()=>{
// // 1、查询数据
// 创建数据的第一种方式
// const zhangsan = new User({
// username: "zhangsan",
// password: "abc",
// age: 20,
// city: "beijing",
// gerder: 1
// })
// zhangsan.save()
// // 创建数据的第二种方式
// const lisi = await User.create({
// username: "lisi",
// password: "123",
// age: 23,
// city: "shanghai",
// })
// lisi.save()
// 查询列表数据 返回的是数组
// const userList = await User.find().sort({age:"-1"})
// console.log(userList)
// 查询单条数据 返回的是对象
const user = await User.findOne({username:"zhangsan"})
console.log(user)
})()
- 更新和删除数据
const {User} = require("./model")
!(async()=>{
// 更新
const updateResult = await User.findOneAndUpdate(
{username:"zhangsan"},//条件
{age:30},//更新的内容
{
new:true //返回更新后的数据
}
)
console.log(updateResult)
// 删除
// const removeResult = await User.remove({username:"lisi"})
// console.log(removeResult)
})()