eg: 我的mongodb安装位置为:D:\mongoDB\mongoDB\mongodb-win32-x86_64-2008plus-ssl-4.0.11\bin
只需要找到环境变量将该地址添加到环境变量path中,这样mongo命令就可以全局执行。
执行以下命令:
我创建的mongodb文件夹在d盘下,所以db子文件夹在d:mongodb\db
log子文件夹:d:mongodb\log\MonDB.log(mongodb.log会自动创建,不用我们手动创建)
所以我执行的命令为:->mongo -- dbpath "d:mongodb\db" --logpath "d:mongodb\log\MonDB.log" --install --serviceName "MongoDB"
命令你数据库存放的位置和日志存放的位置,这个不会的建议百度。
4)这时候基本安装完毕,不会的同学可以百度也可以评论。现在去cmd下执行 mongo
出现:
MongoDB shell version v4.2.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { “id” : UUID(“96e58f01-3679-49ca-b466-ca5f7bf03d8c”) }
MongoDB server version: 4.2.0
则说明安装成功。
1.启动和关闭mongodb数据库(在管理员模式下运行cmd)
启动: net start mongodb
关闭: net stop mongodb
2.进入数据库
在命令行中运行:mongo 进入数据库管理模式
在数据库管理模式中,只能执行数据库命令,不能执行其他命令
exit 推出数据库管理模式
3.数据库的基本操作:
首先了解数据库组成: 数据库名称 下会有数据库集合, 集合下为数据:
这里假设数据库为:news
news下有集合:list
list有数据
首先我们可以查看所有的数据库:
命令:show dbs
进入一个数据库:
命令:use + 数据库名
eg:use news
(如果该集合存在那么回进入集合,如果不存在,那么就会新建这个集合);
查看该数据库下的集合:
命令:show collections
查看当前的数据库名字:
命令:db
创建集合:db.集合名.insert (可以在我们添加数据是直接自动生成新的集合)
删除集合:db.集合名.drop
注意:重中之重: 现有数据库,才会有集合,才会有文档(大家疑问:创建了数据库,show dbs 缺没有我创建的数据库,这是因为数据库中没有内内容,所以接下来我们说数据库的增删改查)
数据库的增删改查:
a.新增数据(还有save方式大家可以去了解下(不常用))
db.集合名.insert({json形式})
eg: db.list.insert({name:"tomcat"});
出现: WriteResult({ "nInserted" : 1 }) 则表明插入成功
b.查看数据
db.集合名.find();
eg:db.list.find(); // 没有格式的数据
db.list.find().pretty(); //格式比较好的数据
c.数据修改
db.集合名.update({}); //前面是通过条件查找到数据
eg:db.list.update(name:"tomcat",name:"jerry"); // 查找name为tomcat的数据,修改为jerry
只修改一条数据:
eg:db.list.update(name:"tomcat",{$set{name:"jerry"}});
d.数据的删除
db.集合名.remove({});
eg:db.list.remove({}) 全部删除 可以通过id值删除一条数据
mongodb还有好多高级命令大家去百度查找然后学习吧
mongoose是node.js的一个第三方模块,是node.js一部环境下对mongodb进行便捷操作的对象模型工具。
可以对mongodb进行数据的增删改查等方法。
cnpm install mongoose //需要安装cnpm cnpm是淘宝镜像npm,快速,便捷
express -e app (添加路由,创建项目等我想大家柠檬找到这应该都掌握了就不多阐述了,直接进入正题)
1.连接数据库:
语法: mongoose.connect("momgodb://服务器:端口号/数据库名",回调函数);
eg:
mongoose.connect("mongodb://127.0.0.1/news",{useNewUrlParser:true,useUnifiedTopology:true},function(err,data){
if(err){
throw err}else{
console.log("数据库连接成功")}}); 地址为本机地址。后面为你要链接的数据库名
2.数据库骨架的定义:
定义骨架Scheme:
概念:scheme 是一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
语法: new mongoose.Schema({
字段名:类型,
字段名:类型
})
eg:定义了数据库中数据的类型,便于后期添加和修改数据
var listSchema = new mongoose.Schema({
title:String,
author:String,
laiyuan:String,
content:String,
time:String,
hits:Number
});
3.创建模型
创建模型model(用来读取数据):
根据骨架来创建模型:
概述: 具备数据库操作的能力,通常用来读取数据库
var boyModel = mongoose.model("模型名称","骨架","集合名称");
// 注意 : 模型名称一般和 集合名称相同
eg:
var newsModel = new mongoose.model("list",listSchema,"list");
4.创建实体
依赖于模型创建实体(增删查改的操作要依赖于实体):
Entity是一种根据模型创建出一个实例,具备数据库操作的能力,通常用于写数据
(新增,修改,删除)。
var boy = new boyModel();
//boy.属性名 = 值:
singer.save(); //将添加到实体的属性保存到数据库中
singer.remove(); // 删除数据
之后是我根据mongodb + mongoose + express 制作的一个小的新闻系统,基本实现了数据库的增删查改以及express模块中路由的使用的而熟悉。
这是我的需求文档:
需求:制作一个基于后端模板的新闻发布系统
功能:
1.允许用户发布新闻
2.允许用户查看新闻(可以在首页浏览到最新的新闻)
3.允许用户操作删除新闻
4.允许用户操作修改新闻
1.设计好数据库,和数据的存储结构
数据库名: news
集合: list
文档结构(骨架):
标题(title):string
作者(author):string
来源(from):string
内容(content):string
时间(time):string
点击率(hits):number
第一部分 环境搭建
1.搭建express项目
1)创建项目 express - e + 项目名称
2)安装依赖 cnpm install
3)监听端口 app.listen(2019)
4)运行项目
5)测试项目 手动打开浏览器 输入网址: localhost
2.配置mongoose
1)连接数据库
mongoose.connect("mongodb://127.0.0.1/news",{},function(err){
if(err){
throw err;
}else{
console.log("数据库连接成功");
}
})
2)定义骨架
var listSchema = new mongoose.Schema({
title:String,
author:String,
from:String,
content:String,
time:String,
hits:Number
})
3)创建模型
var listModel = mongoose.model("list",listSchema,"list");
第一部分 ok
第二部分 实现功能
功能实现
1.允许用户发布新闻
1)制作一个添加新闻的静态页面
从resource 目录中将newsadd.html 复制到public静态目录下
修改静态代码,修改from扁担指向/save_add.html,定义所有输入框的名称
(save_add.html) 要作为一个动态页面来接收数据
2)制作一个save_add.html 动态页面,保存到数据库中,提示用户结果
a.根目录下的请求找index.js模块中挂载新路由save_add.html(post方式)
3)将数据添加到数据库
var list = new listModel();
list.属性名 = value;
list.save(function(){});
over! 撒花庆祝 哈哈哈
2.
2.允许用户查看新闻(可以在首页浏览到最新的新闻)
1)先制作一个新闻列表的后端模板
从resource目录中复制newslist.html 到views/newslist.ejs
将原有的测试数据删除
添加for循环模板语法
3.
3.允许用户操作删除新闻
1)找到删除链接的位置,添加a标签连接,指向删除功能的路由
(newslist.ejs)的模板哩
添加a标签连接,加链接指向删除功能的路由 /del.html ? id =
2)编写路由实现功能
在router上挂载一个删除新闻的路由 /del.html
接收id值,作为被删除的数据标识
根据id查找到数据实体
data.remove()调用方法实现删除数据
删除完成以后跳转到列表页面
4.允许用户操作修改新闻
第一部分:
1) 显示出老的数据,提供给用户修改
1.给列表后面的修改添加链接,指向到新的地址
传递id值作为数据的唯一标识
2.制作显示老数据的模板
根据 add.html 制作一个显示老数据的模板
3.编写路由实现/edit.html动态页面
获取id传值
根据id读取数据
使用ejs模板引擎,将数据和模板进行渲染,得到最终结果返回给客户端
2) 保存修改后的数据
1.创建/save_add.html,用于修改数据
打开index.js模块,在router上以post方式挂载/save_edit.html
2.接收客户端传值
注意:必须传递id值才能知道要被修改的数据是谁。在客户端必须添加一个
隐藏域用于传递id值。
传递id
3.查找要被修改的数据
listModel.findById(id)
4. 修改数据
data.title = title
......
data.save() 保存数据到数据库
redirect(可以实现直接跳转)
上面是上传页和新闻列表页,其中包括数据修改,数据新增和数据添加。
这是代码页文件配置如下:
因为我比较菜,没有注册自己的git,所以有需要一起探讨的小朋友可以评论我,我们一起学习和进步。