nodejs模板(模板引擎)

结构(html)结构 可以直接渲染数据 (jsp)
node模板引擎
jade
pug
ejs 没有破坏html结构

cnpm i ejs -S //安装步骤

app.set('views', './views')

app.set('view engine', 'ejs')

views
  home.ejs
  news.ejs // 将html后缀名改为ejs


路由中渲染

  res.render('home', { //可以携带数据到模板上可以渲染

  })
渲染数据
允许我们在 ejs (结构中) 写js
赋值
  <%= 变量 %>
  <% 这里可以写任意的js %>

  <%- richText %> 渲染富文本<%= %> 不会渲染富文本

  <%- include('head') -%> 引入公共模板(公共首尾head公共模板名)

robot 3t 可视化操作mongodb

mongodb 非关系型数据
mysql/oracle 关系型数据库

数据库
  表
    行
      列

数据库
  collection 集合
    document 
      key 字段
直接以 json格式存储
规范宽泛

mongodb

非关系型数据  存储数据格式 就是json  mongodb redis

关系型数据:mysql oracle

对比
        关系型                               非关系型  json

        数据库(database) (数据仓库)       数据库(database)
        表     (table)                        collection 集合  [{},{},{}]
        行     row                            document 文档 json
        列 字段  col                           key

mongodb 原生sql 语句

show dbs  查看有哪些数据库
use 数据库 切换到这个数据库
show collections 查看当前数据库下 有哪些 集合 (前提 你得先切换到目标数据库)
一下 所有的操作 都需要切换到 目标数据库才能执行

db.createCollection("名字")  创建一个集合
db.集合名.drop()
以上命令 都不重要(这些操作 我们一般会在可视化软件中操作)

下面 增删改查 才是重点

robot 3T mongodb可视化

查看文档

最简单查看文档的方法就是find(),会检索集合中所有的文档结果

db.集合名.find()  

要以格式化的方式显示结果,可以使用pretty()方法。

db.集合名.find().pretty()

1.固值寻找

寻找age集合里面所有含有属性值为wscats的文档结果,相当于where name = 'wscats'

db.age.find({name:"wscats"})

2.范值寻找

操作 语法 示例 等效语句
相等 {:} db.age.find({"name":"wscats"}).pretty() where name = ‘wscats’
小于 {:{KaTeX parse error: Expected 'EOF', got '}' at position 4: lt:}̲} `db.age.find(…lt:50}}).pretty()where likes < 50 小于等于 {:{$lte:}}db.age.find({“likes”:{KaTeX parse error: Expected 'EOF', got '}' at position 7: lte:50}̲}).pretty()` wh…gt:}} db.age.find({"likes":{$gt:50}}).pretty() where likes > 50
大于等于 {:{KaTeX parse error: Expected 'EOF', got '}' at position 5: gte:}̲} `db.age.find(…gte:50}}).pretty()where likes >= 50 不等于 {:{$ne:}}db.age.find({“likes”:{$ne:50}}).pretty()` where likes != 50

3.AND和OR寻找

AND

在find()方法中,如果通过使用将它们分开传递多个键,则mongodb将其视为AND条件。 以下是AND的基本语法

寻找_id为1并且name为wscats的所有结果集

db.age.find(
{
   $and: [
      {"_id": 1}, {"name": "wscats"}
   ]
}
)
OR

在要根据OR条件查询文档,需要使用$or关键字。以下是OR条件的基本语法

寻找name为corrine或者name为wscats的所有结果集

db.age.find(
{
   $or: [
      {"name": "corrine"}, {“name“: "wscats"}
   ]
}
)
AND和OR等结合

相当于语句where title = "wscats" OR ( title = "corrine" AND _id < 5)

db.age.find({
$or: [{
 "title": "wscats"
}, {
 $and: [{
   "title": "corrine"
 }, {
   "_id": {
     $lte: 5
   }
 }]
}]
})

插入文档

文档的数据结构和JSON基本一样。
所有存储在集合中的数据都是BSON格式。
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON

要将数据插入到mongodb集合中,需要使用mongodb的insert()save()方法。

db.集合名.insert(document)

比如我们可以插入以下数据

db.wscats.insert({

title: 'MongoDB Tutorials', 
description: 'node_tutorials',
by: 'Oaoafly',
url: 'https://github.com/Wscats/node-tutorial',
tags: ['wscat','MongoDB', 'database', 'NoSQL','node'],
num: 100,
})

也可以支持插入多个,注意传入的是数组形式

db.wscats.insert([{
_id: 100,
title: ‘Hello’
},{
_id: 101,
title: ‘World’
}])

在插入的文档中,如果不指定_id参数,那么mongodb会为此文档分配一个唯一的ObjectId
要插入文档,也可以使用db.post.save(document)。如果不在文档中指定_id,那么save()方法将与insert()方法一样自动分配ID的值。如果指定_id,则将以save()方法的形式替换包含**_id**的文档的全部数据。

db.wscats.save({
_id: 111,
title: 'Oaoafly Wscats', 
})

更新文档

1.update()方法

寻找第一条title为wscats的值,并且更新值title为corrine和age为12

db.age.update({
'title': 'wscats'
}, {
$set: {
 'title': 'corrine',
 'age': 12
}
})

默认情况下,mongodb只会更新一个文档。要更新多个文档,需要将参数multi设置为true,还可以配合find方法里面的各种复杂条件判断来筛选结果,然后更新多个文档

寻找所有title为wscats的值,并且更新值title为corrine和age为12

db.age.update({
'title': 'wscats'
}, {
$set: {
 'title': 'corrine',
 'age': 12
}
}, {
multi: true
})

2.save()方法

_id主键为3的文档,覆盖新的值,注意_id为必传

db.age.save({
'_id':3,
'title': 'wscats'
})

删除文档

删除主键_id为3的文档,默认是删除多条

db.age.remove({
'_id':3
})

建议在执行remove()函数前先执行find()命令来判断执行的条件是否正确

如果你只想删除第一条找到的记录可以设置justOne为1,如下所示

db.age.remove({...},1)

全部删除

db.age.remove({})

Limit与Skip方法 (结合find方法使用)

Limit

如果你需要在mongodb中读取指定数量的数据记录,可以使用mongodb的Limit方法,limit()方法接受一个数字参数,该参数指定从mongodb中读取的记录条数。

db.age.find().limit(数量)
Skip

我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

db.age.find().limit(数量).skip(数量)
//skip()方法默认值为0
current 哪一页  当前页
pageSize 一页多少条

100   10    1
10  10    2
20  10    3
db.stu.find().skip((current-1)*pageSize).limit(pageSize)

所以我们在实现分页的时候就可以用limit来限制每页多少条数据(一般固定一个值),用skip来决定显示第几页(一个有规律变动的值)

排序

在mongodb中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用1和-1来指定排序的方式,其中1为升序排列,而-1是用于降序排列。

1 升序排列
-1 降序排列

db.集合名.find().sort({键值(属性值):1})

age集合表重新根据_id主键进行降序排列

db.age.find().sort({
"_id": -1
})

上传图片功能

multer中间件实现图片上传


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值