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会默认返回

大于:&gt; -> {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']}
])

posted @ 2022-05-25 11:23  干红  阅读(313)  评论(0编辑  收藏  举报