当前位置: 首页 > news >正文

商城网站内容模块有哪些seo技术推广

商城网站内容模块有哪些,seo技术推广,编辑网页的工具有,泰安房产网签最新情况MongoDB核心 基础概念 数据库 数据库是按照数据结构来组织、存储和管理数据的仓库。在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失。我们需要将一些程序运行的数据持久化到硬盘之中,以确保数据的安全性。数据库…

MongoDB核心

基础概念

数据库

  • 数据库是按照数据结构来组织、存储和管理数据的仓库。
  • 在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失。
  • 我们需要将一些程序运行的数据持久化到硬盘之中,以确保数据的安全性。
  • 数据库就是数据持久化的最佳选择。数据库就是存储数据的仓库。

数据库分类

关系型数据库:

  • MySQL、Oracle、DB2、SQL Server ······
  • 关系型数据库中全是表

非关系型数据库:

  •  MongoDB、 Redis ······
  • 键值对数据库

MongoDB

  • MongoDB 是一个基于分布式文件存储的数据库.
  • MongoDB 是为快速开发互联网 Web 应用而设计的数据库系统。
  • MongoDB 的设计目标是极简、灵活、作为Web 应用栈的一部分。
  • MongoDB 的数据模型是面向文档的,所谓文档是一种类似于 JSON 的结构,简单理解
    MongoDB 这个数据库中存的是各种各样的JSON. (BSON)

在MongoDB中有三个重要概念:

  1. 数据库 (database):
    数据库是一个数据仓库,数据库服务下可以创建多个数据库,数居库中可以存放多个集合
  2. 集合 (collection):
    集合类似于 JS 中的数组,在集合中可以存放很多文档
  3. 文档 (document)
    文档是数据库中的最小单位,类似于 JS 中的对象

与JSON来对比:

  • JSON文件==>数据库
  • JSON中的一级数组==>集合
  • 数组中的对象==>文档 

MongoDB Shell

MongoDB Shell 是 MongoDB 提供的官方交互式界面,允许用户与 MongoDB 数据库进行交互、执行命令和操作数据库。

MongoDB Shell 是基于 JavaScript 的,允许用户直接在命令行或者脚本中使用 JavaScript 语言来操作 MongoDB 数据库。

安装完成后,可以来使用 MongoDB Shell 连接到 MongoDB 数据库并执行操作。

数据库命令

1.显示所有数据库

    show dbs

2. 切换到指定的数据库

    use 数据库名

注:如果数据库不存在会自动创建数据库。如果数据库内没有集合,show dbs指令不会显示该数据库

3.显示当前所在的数据库

    db

4. 删除当前数据库

    use 库名db.dropDatabase ()

集合命令

1. 创建集合

    db.createCollection (' 集合名称 ')

2.显示当前数据库中的所有集合

    show collections

3.删除某个集合

    db. 集合名.drop

4.重命名集合

    db.集合名.renameCollection('newName')

文档命令

1.插入文档

    db. 集合名.insert (文档对象)

2.查询文档

    db. 集合名.find (查询条件)例:db.test.find({name:'张三'})

注:查询后结果中,_id 是 mongodb 自动生成的唯一编号,用来唯一标识文档

3. 更新文档

    db. 集合名.update (查询条件,新的文档)例:db. test.update ({name: 张三 '},{$set:{age:19}})

注:如果新文档不使用$set则会覆盖旧文档 

4.删除文档

    db. 集合名.remove (查询条件)

Mongoose

Mongoose简介

Mongoose (http://www.mongoosejs.net)是一个对象文档模型库

可以让我们使用代码来进行操作 mongodb 数据库

使用方法

连接数据库

首先需要安装Mongoose

    npm i mongoose
//导入mongoose
const mongoose = require('mongoose');//连接数据库  mongodb://ip:端口/数据库名
mongoose.connect('mongodb://127.0.0.1:27017/test')//设置回调函数
//连接成功回调
mongoose.connection.once('open', () => {console.log('数据库连接成功')
})//连接失败回调
mongoose.connection.once('err', () => {console.log('数据库调用失败');
})//连接关闭回调
mongoose.connection.once('close', () => {console.log('数据库连接关闭');
})//开启定时器,关闭链接
setTimeout(() => {mongoose.disconnect()
}, 3000)

创建文档结构对象和文档模型对象

//导入mongoose
const mongoose = require('mongoose')//链接数据库
mongoose.connect('mongodb://127.0.0.1:27017/dome')//创建文档结构对象
//该对象用于规定文档结构
let gameSchema = new mongoose.Schema({name: String,price: Number
})//创建文档模型对象
//该对象内封装方法,用于操作数据库
//传参(集合名,文档结构对象)
let gameModel = mongoose.model('games', gameSchema)//设置链接成功后的回调
mongoose.connection.once('open', () => {console.log('数据库连接成功');testDocumentation() //调用封装好的方法进行增删改查
})

字段值验证

 Mongoose 有一些内建验证器,可以对字段值进行验证

字段值验证在创建文档结构对象时进行

let personSchema = new mongoose.Schema({name: {type: String,required: true //必填项},age: {type: Number,default: 18 //默认值},sex: {type: String,enum: ['男', '女'] //枚举值,设置的值必须是数组中的},card: {type: Number,unique: true //唯一值,新建集合才有效果}
})

添加文档(增)

添加文档,可以使用文档模型对象中的create方法来添加,批量添加可以使用insertMany方法

添加一条时,传入参数为符合文档结构对象的对象

async function AddDocumentation() {//添加文档//使用文档模型对象中的create方法try {let add = await gameModel.create({name: '艾尔登法环',price: 298})console.log(add);} catch (error) {console.log(error);}//关闭数据库mongoose.disconnect()
}

添加多条,传入数组,数组内为符合文档结构对象的对象

//增加多条
async function AddDocumentationMany() {try {let add = await gameModel.insertMany([{name: '无限机兵',price: 159},{name: '匹诺曹',price: 298}])console.log(add);} catch (err) {console.log(err);}//关闭数据库mongoose.disconnect()
}

注:Mongoose 6.x 版本之后的 API 变更。从 Mongoose 6 开始,所有的异步操作(如 Model.create()find()save() 等)都不再支持回调函数,而是强制使用 Promise 或 async/await 语法。

控制台输出:

删除文档(删)

删除使用 deleteOne方法和deleteMany方法。

传入一个查询参数即可

deleteOne为单独删除

async function DeleteDocumentOne() {try {let Delete = await gameModel.deleteOne({_id: '68522ffc56b9a48fd708b8fc'})console.log(Delete);} catch (err) {console.log(err);}mongoose.disconnect()
}

deleteMany为批量删除

async function DeleteDocumentMany() {try {let Delete = await gameModel.deleteMany({name: '黑暗之魂1'})console.log(Delete);} catch (err) {console.log(err);}mongoose.disconnect()
}

 控制台输出:

 

更新文档(改)

更新使用 updateOne方法和updateMany方法。

需要传入两个参数,第一个为查询参数,第二个为更新参数

该方法是直接在旧文档进行修改,不存在新文档覆盖旧文档,故不用$set

updateOne为单独更新

async function UpdateDocumentOne() {try {let update = await gameModel.updateOne({ _id: '68523020764ff87f3b7cabbd' },{ name: '魂5' })console.log(update);} catch (err) {console.log(err);}mongoose.disconnect()
}

updateMany为批量更新

async function UpdateDocumentMany() {try {let update = await gameModel.updateMany({ name: '黑暗之魂3' },{ price: 99 })console.log(update);} catch (err) {console.log(err);}mongoose.disconnect()
}

 控制台输出: 

 

 查询文档(查)

查询分为单独查询,ID查询和批量查询

分别使用 findOne ( ) , findById ( ) , find ( ) 方法

单独查询需要传入查询参数,ID查询需要传入ID,批量查询传不传参数都可以

批量查询若不传参,则为查询全部数据

单独查询:

//查询一条数据
async function FindDocumentOne() {try {let find = await gameModel.findOne({ name: '无限机兵' })console.log(find);} catch (err) {console.log(err);}
}

ID查询:

//通过ID查询
async function FindDocumentID() {try {let find = await gameModel.findById('6852817f3870d51a37a2df25')console.log(find);} catch (err) {console.log(err);}
}

批量查询:

//批量查询
async function FindDocumentMany() {try {let find = await gameModel.find({ name: '魂5' })console.log(find);} catch (err) {console.log(err);}
}

控制台输出:

 条件控制

在查询文档时,我们可以设置查询的条件,来获取我们想要的数据

运算符

在mongodb中不可以使用 >  <  = 等运算符,需要使用相应的符号来替换

运算符代替符号
>$gt
<$lt
>=$gte
<=$lte
!==$ne

使用语法:

{ 属性名: { 运算符: 值 } }示例:
let find01 = await gameModel.find({ price: { $lt: 200 } })

 逻辑运算

运算符逻辑
$or逻辑或
$and逻辑与

使用语法:

{ 运算符: [{ 属性名: 值 }, { 属性名: 值 }
] }示例:
let find02 = await gameModel.find({ $or: [{ price: 298 }, { price: 99 }] })
混合用法:
let find03 = await gameModel.find({ $or: [{ price: { $lt: 300 } }, { price: { $gt: 100 } }] })

正则匹配

条件中可以直接使用正则匹配

let find04 = await gameModel.find({ name:/魂/ })let find04 = await gameModel.find({ name: new RegExp('魂') })

个性化读取

字段筛选

在读取完文档后,对象中的一部分数据并不一定是我们所需要的

可以通过字段筛选来获取我们想要的属性

语法:

文档模型对象 . find ( ) . select ( {  属性名 : 0 , 属性名: 1 } )

0:不要的字段    1:要的字段

//批量查询
async function FindDocumentMany() {try {let find01 = await gameModel.find().select({ _id: 0, name: 1, price: 1 })console.log(find01);} catch (err) {console.log(err);}mongoose.disconnect()
}

数据排序 

根据规定属性值排序

语法:

文档模型对象 . find ( ) . sort( {  属性名 : 0 / 1  } )

0:倒序  1:正序

//批量查询
async function FindDocumentMany() {try {let find01 = await gameModel.find().select({ _id: 0, name: 1, price: 1 }).sort({ price: 1 })console.log(find01);} catch (err) {console.log(err);}mongoose.disconnect()
}

数据截取

从指定位置获取到指定数量的数据

语法:

文档模型对象 . find ( ) . skip( 数字 )  //跳过几个数据

文档模型对象 . find ( ) . limit( 数字 )   //获取几个数据

//批量查询
async function FindDocumentMany() {try {let find01 = await gameModel.find().select({ _id: 0, name: 1, price: 1 }).sort({ price: 1 }).skip(2).limit(3)console.log(find01);} catch (err) {console.log(err);}mongoose.disconnect()
}


文章转载自:
http://wanjiamonogamy.rymd.cn
http://wanjiainez.rymd.cn
http://wanjiaorthocephalic.rymd.cn
http://wanjiaviewer.rymd.cn
http://wanjiasinistrocular.rymd.cn
http://wanjiahemolyze.rymd.cn
http://wanjianewsbeat.rymd.cn
http://wanjiaarrogate.rymd.cn
http://wanjiaproofread.rymd.cn
http://wanjiablazing.rymd.cn
http://wanjiaprolative.rymd.cn
http://wanjiamoocher.rymd.cn
http://wanjiabenevolent.rymd.cn
http://wanjiaturacou.rymd.cn
http://wanjiakomondor.rymd.cn
http://wanjialib.rymd.cn
http://wanjiacasquet.rymd.cn
http://wanjiasyssarcosis.rymd.cn
http://wanjiabiliverdin.rymd.cn
http://wanjiatransferability.rymd.cn
http://wanjiahandset.rymd.cn
http://wanjiahebraize.rymd.cn
http://wanjiakioto.rymd.cn
http://wanjiamoxibustion.rymd.cn
http://wanjialandaulet.rymd.cn
http://wanjiagoshawk.rymd.cn
http://wanjiaclarification.rymd.cn
http://wanjiaprostatectomy.rymd.cn
http://wanjiaplatinize.rymd.cn
http://wanjiascolopendrid.rymd.cn
http://wanjiaoffing.rymd.cn
http://wanjiaquincentenary.rymd.cn
http://wanjiacoyness.rymd.cn
http://wanjiaenshrinement.rymd.cn
http://wanjiadortour.rymd.cn
http://wanjiaaccomplish.rymd.cn
http://wanjiakinder.rymd.cn
http://wanjiaseverity.rymd.cn
http://wanjiageostrategy.rymd.cn
http://wanjiahumiliate.rymd.cn
http://wanjiaimmoderation.rymd.cn
http://wanjiatexian.rymd.cn
http://wanjiaresinate.rymd.cn
http://wanjiaretardant.rymd.cn
http://wanjianessie.rymd.cn
http://wanjiadivestiture.rymd.cn
http://wanjiameandrine.rymd.cn
http://wanjiaswansdown.rymd.cn
http://wanjiabeaked.rymd.cn
http://wanjiapot.rymd.cn
http://wanjiaganglioid.rymd.cn
http://wanjiapostbellum.rymd.cn
http://wanjiaawl.rymd.cn
http://wanjiamall.rymd.cn
http://wanjiaperspectograph.rymd.cn
http://wanjiaindispensable.rymd.cn
http://wanjiabva.rymd.cn
http://wanjiacommunicative.rymd.cn
http://wanjiaprediction.rymd.cn
http://wanjiaunsf.rymd.cn
http://wanjiaremovalist.rymd.cn
http://wanjiapseudomyopia.rymd.cn
http://wanjiasyngenite.rymd.cn
http://wanjiaspeedily.rymd.cn
http://wanjiarightwards.rymd.cn
http://wanjiaslaty.rymd.cn
http://wanjiazadar.rymd.cn
http://wanjiabehtlehem.rymd.cn
http://wanjiaencaustic.rymd.cn
http://wanjiafovea.rymd.cn
http://wanjiavelveteen.rymd.cn
http://wanjiaaliped.rymd.cn
http://wanjiaoligotrophic.rymd.cn
http://wanjiaihs.rymd.cn
http://wanjiabsaa.rymd.cn
http://wanjiabusload.rymd.cn
http://wanjiarotenone.rymd.cn
http://wanjiadjin.rymd.cn
http://wanjiamonotreme.rymd.cn
http://wanjialaziness.rymd.cn
http://www.15wanjia.com/news/122243.html

相关文章:

  • 网站建设页面带声音鞍山seo公司
  • 动漫设计工作室网站建设公司疫情防控最新数据
  • 连云港做网站制作网站怎么被百度收录
  • 网站设计便宜培训心得简短
  • 前端开发是程序员吗武汉seo楚天
  • 四川省建设厅职业注册中心网站线上推广哪个平台最好
  • 城阳网站开发企点qq官网
  • wordpress 微信绑定网站seo具体怎么做
  • 卖鞋做哪个网站好免费获客软件
  • 阿里巴巴怎样做网站下载浏览器
  • 动态web网站怎么做做网站的公司
  • 惠州有做网站的吗秦皇岛网站seo
  • 成都网站推广外包申请网址怎么申请的
  • 工作室建设基础结构优化
  • 网站建设的闪光点百度教育
  • 网站开发技巧韩国seocaso
  • 合肥企业网站建设工百度公司官网
  • 网站群集约化建设电商数据分析
  • 公司网站设计公司排名广州网站优化软件
  • 赣州网站建设.com软件培训机构
  • 如何做线上销售优化seo系统
  • 广州企业网站营销电话疫情最新数据消息地图
  • 南宁网站seo好看的网站设计
  • 简单网站建设合同武汉seo网络优化公司
  • 找人做的网站 没登录口站长统计推荐
  • 网站平台建设什么意思职业培训机构有哪些
  • asp网站建设实录seo短视频网页入口营销
  • 重庆南坪网站建设咨询400域名注册服务网站哪个好
  • 大型网站建设企业名录模板子域名大全查询
  • 广州做网站海珠新科苏州搜索引擎排名优化商家