ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mongodb使用与集成MongoDB到Express框架中

2022-05-25 11:31:23  阅读:170  来源: 互联网

标签:name mongodb age Express db sex MongoDB id mycoll


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']}
])

标签:name,mongodb,age,Express,db,sex,MongoDB,id,mycoll
来源: https://www.cnblogs.com/shuhan-hou/p/16308676.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有