本章节讲解nodeJS整合MongoDB数据库.
MongoDB快速安装
注意:本次安装是安装在linux系统中的.
创建目录
mkdir mongodbConfig;cd mongodbConfig
下载MongoDB
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz
解压安装包
tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgz
创建所需目录(在mongodb目录下创建以下目录)
mkdir -p data/db #数据库目录,创建的数据库都会存放在里面
mkdir -p logs #日志目录
mkdir -p conf #配置文件目录,存放配置文件,后期要自己创建一个配置文件
mkdir -p pids #进程描述文件目录
在conf/目录下创建MongoDB配置文件
vim /usr/local/mongo/conf/mongo.conf
配置文件内容如下
#数据保存路径
dbpath=/root/mongodbConfig/mongodb-linux-x86_64-rhel70-4.2.1/data/db/
#日志保存路径
logpath=/root/mongodbConfig/mongodb-linux-x86_64-rhel70-4.2.1/logs/mongo.log
#进程描述文件
pidfilepath=/root/mongodbConfig/mongodb-linux-x86_64-rhel70-4.2.1/pids/mongo.pid
#日志追加写入
logappend=true
bind_ip_all=true
#mongo默认端口
port=27017
#操作日志容量
oplogSize=10000
#开启子进程
fork=true
通过配置文件来启动MongoDB服务端
./bin/mongod -f conf/mongo.conf
服务端启动后启动MongoDB客户端
./bin/mongo --host 127.0.0.1 --port 27017
#或者
./bin/mongo
输入命令查看数据库
> show databases
admin 0.000GB
config 0.000GB
local 0.000GB
至此,MongoDB的linux环境配置成功!
MongoDB基础命令
查看帮助手册
db.help()
创建数据库
use 数据库名
#如
use testdb
查看当前数据库
db
查看数据库(注意,如果我们只创建数据库不放表单,那么数据库就不会被显示出来)
show dbs
查看MongoDB的版本
db.version()
创建集合
db.createCollection("集合名")
#如:
db.createCollection("users")
获取指定集合
db.getCollection("集合名")
#如:
db.getCollection("users")
获取当前数据库所有集合
db.getCollectionNames()
删除集合
db.集合名.drop()
#如:
db.users.drop()
删除数据库
在哪个数据库下执行就删除哪个数据库
db.dropDatabase()
集合操作
向集合中存储数据
#注意:这里存储的数据是以json格式存储的
db.集合名.save({数据key:数据value,.....})
#如:
db.users.save({username:"zs",age:100})
批量插入数据到集合中
因为插入数据是按照json形式来的,所以我们可以将数据放入数组,然后一起存入数据库。
db.users.save([{username:"lx",age:20},{username:"lzxf",age:26}])
查找集合中所有数据
db.集合名.find({})
#如:
db.users.find({})
查询年龄大于20岁的数据
db.users.find({age:{$gt:20}})
查询年龄小于20岁的数据
db.users.find({age:{$lt:20}})
使用正则表达式来查询数据
#查询username中包含z的数据
db.users.find({username:/z/})
将查询出来的数据排序
#1是升序,-1是降序
db.users.find().sort({age:1})
//降序
db.users.find().sort({age:-1})
查询指定条数数据
#skip表示跳过几条数据,limit表示显示几条数据
db.users.find({}).skip(0).limit(2)
或查询数据
#查询数据:查询age为10或者age为26或者username为章北海的数据
db.users.find({$or:[{age:10},{age:26},{username:"章北海"}]})
与查询数据
#查询数据: 查询age为30并且username为"章北海"的数据
db.users.find({$and:[{age:30},{username:"章北海"}]})
查询数据总数
#查询数据总数
db.users.find().count()
#查询指定数据总数
#如:查询年龄为26岁的数据条数
db.users.find({age:26}).count()
删除集合中的数据
删除集合中所有数据
#删除集合中所有数据
db.集合名.remove()
#如: 删除users集合下所有数据
db.users.remove()
删除集合中指定数据
db.集合名.remove({数据key:数据value})
#如:我有以下数据
{ "_id" : ObjectId("633d43fc19614da18a8aea4a"), "username" : "zs", "age" : 10 }
{ "_id" : ObjectId("633d445019614da18a8aea4b"), "username" : "章北海", "age" : 28 }
{ "_id" : ObjectId("633d451219614da18a8aea4d"), "username" : "lx", "age" : 20 }
{ "_id" : ObjectId("633d451219614da18a8aea4e"), "username" : "lzxf", "age" : 26 }
#现在我想要删除名字为lx的数据
db.users.remove({username:"lx"})
#我想要删除年龄为10岁的数据
db.users.remove({age:10})
修改集合中数据
db.集合名.update({要修改数据的key:要修改数据的value},{$set:{修改数据key:修改数据value}})
#如:我有一个数据:
{ "_id" : ObjectId("633d445019614da18a8aea4b"), "username" : "章北海", "age" : 28 }
#我要将该数据的年龄改为30岁
db.users.update({username:"章北海"},{$set:{age:30}})
这里注意,要修改的数据要写在$set内,如果不设置$set,会直接将数据替换掉。他更新数据只会将$set后的数据更新
NodeJs操作MongoDB数据库
下载mongodb操作模块
npm install mongoose
下面我将为大家讲解NodeJs整合MongoDB数据库的增删改查
注意:下面的代码只用于展示,不考虑实际业务,所以没有做校验.
我们将要编写两个文件
一个是UserDao.js文件,用于存放数据库相关的操作函数.
const mongodb = require("mongoose")
//mongodb://数据库ip:27017/连接数据库名
mongodb.connect("mongodb://192.168.40.188:27017/testMongodb")
//限制模型字段类型的对象
const modelType = {
username: String,
password: String,
age: Number
}
//创建模型(模型相当于命令行操作的集合)
// model 第一个参数是模型名,第二个参数是限制模型字段和类型的
const userModel = mongodb.model("user", new mongoose.Schema(modelType));
const dbOpt = {
//用于添加用户的函数
//这里的jsonObj是要传入一个json形式的对象
add: (jsonObj) => {
userModel.create(jsonObj)
},
//修改专区
//通过名字修改信息
updateByName: (OldName, newValueObj) => {
//OldName是名字,用来指定修改那条数据用的
//newValueObj是对象,用来修改参数使用的
userModel.updateOne({username: OldName}, {$set: newValueObj}).then(data => {
console.log(data)
})
},
//删除专区
//传入一个json形式的对象
deleteOne: (deleteObj) => {
userModel.deleteOne(deleteObj).then(data => {
console.log(data)
})
},
//查询专区
findAll: () => {
//查询所有数据
userModel.find({}).then(data => {
console.log(data)
})
},
findSomething: (projectionOpt) => {
//projectionOpt参数是一个数组,用于指定他的一个指定字段返回数据
//学过typeScript的小伙伴可以规范一下形参的类型,防止传参类型不对导致报错
//查询所有数据的指定字段数据
//userModel.find({}, ["username", "age"])
userModel.find({}, projectionOpt).then(data => {
console.log(data)
});
},
//分页查询
pageSearch: (displayFields, pageNum) => {
//displayFields是数组,限制数据的字段显示
//pageSize就是限制每页显示的个数
//分页查询公式: (pageNum-1)*pageSize
//这里我们固定一页显示两条数据
//skip是跳过的意思,也就是从哪里开始,如:skip(2)则代表从第二条数据后面开始,不包括第二条数据,属于开区间
//limit表示显示几条
userModel.find({}, displayFields).skip((pageNum - 1) * 2).limit(2).then(data => {
console.log(data)
})
}
}
//将数据库操作对象暴露出去,供其他文件调用
module.exports = dbOpt
另一个是index.js文件,用于使用UserDao中的函数进行增删改查操作.
//导入userDao
const userDao=require("./UserDao.js")
//测试添加用户
let obj={username:"张三三",password:"12333",age:10}
userDao.add(obj)
//测试查询用户
userDao.findAll()
//测试查询用户部分字段
userDao.findSomething(["username","age"])
//测试修改用户
userDao.updateByName("张三三",{password:"123"})
userDao.findAll()
//测试删除用户
userDao.deleteOne({username:"张三三"})
//测试分页查询
//查看第一页数据(每页就两条)
userDao.pageSearch(["username","age"],1)
以上就是nodeJS+Mongodb相关的内容,欢迎各位评论教导,如果觉得文章还不错或者有什么地方不懂的,欢迎留言提问点赞🧡🤞🤞🤞🧡