Node.js 从入门到放弃(七)

Node.js 操作 MongoDB

MongoDB v4.1& node.js 文档: https://docs.mongodb.com/drivers/node/current/quick-start

一、使用 npm 安装 MongoDB
npm install mongodb --save-dev
二、导入MongoDB
import { MongoClient } from 'mongodb'
三、node.js 连接 MongoDB 数据库

前提条件:打开cmd命令窗口,启动MongoDB数据库服务端

mongod --dbpath 数据库目录路径
1.查询

查询单条数据

index.ejs

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>你好,我是首页!</h1>
    <h2>数据库查找的学生姓名:<%=name%></h2>
</body>
</html>

server.js

import http from 'http'
import ejs from 'ejs'
import { app } from './router.js'
import { MongoClient } from 'mongodb'	// 第一步,引入 MongoClient 

http.createServer(app).listen(3000)
console.log('Server is run at port 3000')

const url = 'mongodb://127.0.0.1:27017'
const client = new MongoClient(url)	   // 第二步,根据mongodb服务端地址创建 MongoClient 实例 

app.get('/', async (req, res) => {
    try {
        
        await client.connect()		   // 第三步,连接数据库
        const userDataBase = client.db('user')		// 第四步,指定操作的数据库
        const studentCollection = userDataBase.collection('student')	// 第五步,指定操作的集合/表
        const student = await studentCollection.findOne({name: '诸葛亮100'})

        ejs.renderFile('./views/index.ejs', {name: student.name}, (err, data) => {
            res.send(data)
        })

    } catch (e) {
        // 处理错误
    } finally {
        await client.close()
    }
})

浏览器访问 http://localhost:3000
在这里插入图片描述


批量查询
    <h1>你好,我是首页!</h1>
    <ul>
        <% studentList.forEach(c => {%> 
            <li><%=c.name%></li> 
        <%})%>
    </ul>
// find方法批量查询,返回一个cursor对象,查询number小于等于3的数据,且按number字段降序排序
const cursor = studentCollection.find({number: { $lte: 3 }}, {sort: {number: -1}}) 
// 调用toArray方法转为数组
const studentList = await cursor.toArray()	
ejs.renderFile('./views/index.ejs', {studentList}, (err, data) => {
	res.send(data)
})

在这里插入图片描述

2.新增

新增单条数据

await studentCollection.insertOne({name: '孙悟空', age: 100})

在这里插入图片描述


批量新增
await studentCollection.insertMany([{name: '百里守约', age: 11, type: '射手'}, {name: '孙尚香', age: 12, type: '射手'}, {name: '公孙离', age: 13, type: '射手'}])

在这里插入图片描述

3.修改

修改单条数据

// upsert选项设置true表示假如没有查询到匹配的数据时,则新增数据
await studentCollection.updateOne({name: '孙悟空'}, {$set: {name: '鲁班七号'}}, {upsert: true})

在这里插入图片描述


批量修改

// upsert选项设置true表示假如没有查询到匹配的数据时,则新增数据
await studentCollection.updateMany({name: '孙悟空'}, {$set: {name: '鲁班七号'}}, {upsert: true})

在这里插入图片描述


await studentCollection.replaceOne({name: '百里守约'}, {name: '百里玄策', sex: '男', type: '打野'})

替换
在这里插入图片描述

4.删除

删除单条数据

const result = await studentCollection.deleteOne({name: '孙尚香'})
if (result.deletedCount === 1) {
	console.log('删除成功!')
} else {
	console.log('查询不到要删除的数据')
}

在这里插入图片描述


批量删除
const result = await studentCollection.deleteMany({name: '孙尚香'})
console.log(result.deletedCount)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值