NodeJs零基础教程(四)

本章节讲解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相关的内容,欢迎各位评论教导,如果觉得文章还不错或者有什么地方不懂的,欢迎留言提问点赞🧡🤞🤞🤞🧡 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值