mongodb使用与集成MongoDB到Express框架中
2022/5/26 2:21:34
本文主要是介绍mongodb使用与集成MongoDB到Express框架中,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、数据库启动以及常见问题解决
直接运行mongo命令,不会进入mongo控制台,那么需要重新打开一个cmd命令运行mongod命令,来启动mongodb服务,不能停止这个服务
2、数据库分类
关系数据库:MySQL、Oracle、MSsql、DB2,它存储的是关联数据;在执行关联查询的时候,需要一些优化手段;数据库 -> 业务数据库 -> 业务表
非关系数据库:存储运行结果
1、文档型数据库:Mongodb 执行查询效率非常高,查询结果很快,关联查询很慢;常常用于webService数据库
2、内存型数据库:redis 存储热数据(用户查询频率非常高,但是数据更新频率比较低) 用于做中间数据库--消息
3、MongoDB在CMD命令行中的基本使用
a、帮助方法的使用
全局帮助命令:help
集合的帮助命令:db.mycoll.help() help on collection methods
显示当前服务器上的所有数据库名字:show dbs
show collections show collections in current database 显示当前业务数据库中的集合
在mongodb中没有表的概念,数据表是集合(因为mongodb存储的是json对象)
b、查看数据库常用方法
use <db_name> set current database 设置某个业务数据库为当前数据
在mongodb中,数据库和集合可以不存在
然后使用use来指定一个数据库就可以了,指定的数据库可以不存在,一旦往数据库中插入数据,那么数据库和集合自动创建
c、数据新增、查询
db.mycoll.insert(obj)
db.mycoll.insert({id: 'admin', name: '超级管理员'})
db.mycoll.insertMany([
{id: 'zhangsan01', name: '张三01', age: 21, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan02', name: '张三02', age: 22, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan03', name: '张三03', age: 23, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan04', name: '张三04', age: 24, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan05', name: '张三05', age: 25, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan06', name: '张三06', age: 26, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan07', name: '张三07', age: 27, sex: 1, phone: ['13691715060', '13691715061']}
])
db.mycoll.find([query],[fields]) - query is an optional query filter. fields is optional set of fields to return.
e.g. db.mycoll.find( {x:77} , {name:1, x:1} )
db.mycoll.find([query],[fields]) 这个方法可以传递两个参数 fields 表示从这个集合中取哪些字段或则哪些字段不取出来
query -> 查询条件对象
db.mycoll.find({id: 'admin'}) 查询id为admin的用户信息
db.mycoll.find({id: 'admin'}, {name: 0, _id: 0}) 只有0,那么剩下字段都要返回
db.mycoll.find({id: 'admin'}, {name: 1, _id: 0}) 只有1的字段会返回
db.mycoll.find({id: 'admin'}, {name: 1}) 如果有1,那么_id会默认返回
大于:> -> {age: 大于22小于26} -> db.mycoll.find({age: {$gt: 22, $lt: 26}}) => 有一些mongodb自己的一个属性:$gt
----------------------------------------------------------
1、MongoDB在CMD命令行中的基本使用 -- 在集合中有一个_id字段,是Mongodb自动添加的唯一标识,不要去修改
d、数据修改
db.mycoll.updateOne( filter, <update object or pipeline>, <optional params> ) - update the first matching document, optional parameters are: upsert, w, wtimeout, j, hint
db.mycoll.updateOne( filter, <update object or pipeline>, <optional params> ) => filter 筛选(过滤)条件 update object 更新对象
db.mycoll.update({id: 'zhangsan01'}, {sex: 2})
2022-05-24T10:38:28.375+0800 E QUERY [js] uncaught exception: Error: the update operation document must contain atomic operators :
DBCollection.prototype.updateOne@src/mongo/shell/crud_api.js:565:19
db.mycoll.updateOne({id: 'zhangsan02'}, {$set: {sex: 2}})
e、数据删除
db.mycoll.deleteOne({sex: 2})
f、数据条件查询
2、用户数据模型设计
用数据来描述真实世界中的事物
{
id: String,
name: String,
age: Number,
dept: String,
position: String,
date: Date,
birthday: Date,
address: String,
phone: String,
remark: String
}
----------------------------------------------------------
1、集成MongoDB到Express框架中
所以需要集成第三方库:cnpm i -S mongoose (--save -S 发布依赖) --save-dev -D 开发依赖
项目流程
分析 -> 梳理 -> 罗列步骤
建立一个服务器,需要实现一个静态页面,还有一个接口,这个接口可以在页面上调用,然后获取到mongodb中的数据
建立服务器 -> 静态服务器 -> 开发一个接口 -> 页面上调用接口 -> 返回模拟数据 -> 连接数据库 -> 调用数据接口获取数据 -> 返回真实数据给页面
restful架构设计:
使用method(请求方式)来声明当前要执行接口操作 C create PUT,R retrieve GET,U update POST, D delete DELETE
a、express 方法创建实例
b、listen 方法监听端口启动服务
c、新建一个目录--用于存放所有的js、html、css代码、png等静态文件
d、use 一个中间件(static)来实现静态服务器
e、开发一个get接口:/user/list
f、使用XHR(XMLHttpRequest)发送请求
g、连接数据库并调用 find 方法?
2、mongoose的库的使用
a、连接数据库
b、建立数据模型
----------------------------------------------------------
1、开发用户信息获取方法
a、调用获取数据接口
b、返回数据到前端接口
db.user_info.insertMany([
{id: 'zhangsan01', name: '张三01', age: 21, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan02', name: '张三02', age: 22, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan03', name: '张三03', age: 23, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan04', name: '张三04', age: 24, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan05', name: '张三05', age: 25, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan06', name: '张三06', age: 26, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan07', name: '张三07', age: 27, sex: 1, phone: ['13691715060', '13691715061']}
])
这篇关于mongodb使用与集成MongoDB到Express框架中的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享