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

做资讯类网站需要特殊资质吗贵阳搜索引擎排名推广

做资讯类网站需要特殊资质吗,贵阳搜索引擎排名推广,自已电脑做网站,wordpress云采插件用MongoDB实现仓库管理的出库入库 MongoDB什么是MongoDBMongoDB安装以及开始运行配置启动以及mongoshmongodb的基础使用命令启动和使用MongoDB服务数据库操作集合操作文档操作 项目部署在数据库中创建一张商品信息表提供信息表的增删改查操作接口 MongoDB 什么是MongoDB Mong…

用MongoDB实现仓库管理的出库入库

  • MongoDB
    • 什么是MongoDB
    • MongoDB安装以及开始运行
    • 配置启动以及mongosh
    • mongodb的基础使用命令
      • 启动和使用MongoDB服务
      • 数据库操作
      • 集合操作
      • 文档操作
  • 项目部署
    • 在数据库中创建一张商品信息表
    • 提供信息表的增删改查操作接口

MongoDB

什么是MongoDB

Mongodb是一种比较常见的NoSQL类型数据库,所谓NoSQL就是Not only SQL,非关系型数据库,数据在MongoDB中的存储相比MySQL而言比较松散,并没有特定的数据结构,存储方式类似JSON,采用了一种二进制的BSON来进行数据存储。但是MongoDB由于以下的几个优势在互联网需要处理海量数据场景下有独特的优势,比较经典的应用场景有微信和Twitter每天数以TB甚至PB级别的数据量。

  1. 高性能
  2. 高可用
  3. 高扩展
  4. 丰富的查询支持

MongoDB安装以及开始运行

在这里插入图片描述
安装成功运行会看到上面这张结果图。

配置启动以及mongosh

在命令行中输入如下命令:

 sudo vim /etc/systemd/system/mongodb.service

在打开的mongodb.service文件中填入以下内容:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf[Install]
WantedBy=multi-user.target

在这里插入图片描述
配置成功以后输入mongo就可以与数据库连接上并进行相关操作。

mongodb的基础使用命令

启动和使用MongoDB服务

# 重新加载配置,并启动mongodb
sudo systemctl daemon-reload
sudo systemctl start mongod# 查看运行状态
sudo systemctl status mongod
# 如果mongodb状态为stop,则运行 sudo systemctl enable mongod# 停止mongodb
sudo systemctl stop mongod# 重启mongodb
sudo systemctl restart mongod

数据库操作

# 创建和切换数据库,命名规范:全部小写
use dbname
# 删除数据库,主要是用来删除已经从内存持久化到磁盘中的数据库
db.dropDatabse()
# 显示已经创建的数据库
show dbs

集合操作

# 创建集合
db.createCollection("collectionname")
# 删除集合
db.collectionname.drop()
# 显示已经创建的数据库
show dbs

!注:这里还有一个是集合的隐式创建,通过在文档操作的时候insert操作如果没有匹配到现有数据库,就创建一个。

文档操作

# 创建文档
db.collectionname.insert({BSON格式数据})
# 文档数据查询
db.collectionname.find()
# 文档数据更新,直接使用是覆盖更新
db.collectionname.update(query, update, options)
# 局部更新,使用$set修改器
db.collectionname.update({userId:"1001"},{$set:{username="张三"}})
# 批量更新,在option选项中增加multi:true
db.collectionname.update({userId:"1001"},{$set:{username="张三"}})
# 文档删除,如果没有带条件就是“删库跑路”
db.collectionname.remove(query)

! 注:mongodb中默认的是浮点类型的数据,因此想使用整型变量的时候需要用NumberInt函数进行转换。

项目部署

在数据库中创建一张商品信息表

在这里插入图片描述
由于已经有MongoCampass这个图形化的工具,在创建的时候可以使用这个提高效率而不用一行一行输入数据。
在这里插入图片描述
创建好集合以后就可以向集合中插入文档数据,编辑好一行以后按加号继续编辑下一行。

提供信息表的增删改查操作接口

这个部分的内容有一位大佬总结的很好了,这里贴出他的博客,非常建议学习,他总结的关于Schema和Collection还有Document之间的关系使我茅塞顿开。

//引入mongodb数据库 => MongoClient mongo =>客户端
const {MongoClient} = require("mongodb");// mongo连接网址
const url = 'mongodb://127.0.0.1:27017';//mongo连接 数据库名称
const dbName = 'Shop';async function connect() {
// 注意点:由于 MongoClient.connect() 返回的是一个promise对象 因此可以使用async 和 await
// console.log(MongoClient.connect(url)); //(MongoClient.connect(url) 返回一个Promise对象)const client = await MongoClient.connect(url); //链接数据库const db = client.db(dbName); //匹配数据库return {client,db}
}//数据库操作之 增函数 参数1:集合 参数2:data数据(增的数据)
async function insert(colName, data) {
//1:链接数据库 并且把db 和 client在链接数据库中导出 let {db,client} = await connect()//2:匹配数据库集合const collection = db.collection(colName);
//3:需要判断传入的数据 是一条还是多条 一条就是insertOne 多条就是insertMany 在集合之中插入数据 const result = await collection[Array.isArray(data) ? "insertMany" : "insertOne"](data);
//3:关闭数据库连接client.close();return result;
}//数据库之 改
// `db.集合的名称.updateOne( {name:"ppp",age:10 } , { $set : { name:"嘿嘿",age:20} } );`
//根据id来修改 数据库中的data
async function update(colName, query, newData) { //newData{$set:{price:200,qty:2},$inc:{view:1}}let {db,client} = await connect();let collection = db.collection(colName);//根据id删除 数据if (query._id && typeof query._id === 'string') {query._id = ObjectId(query._id);}let result = await collection.updateOne(query, newData);console.log("result" + result);return result;}//数据库之 删 
// `db.集合的名称.deleteMany({name:"ppp"})`
async function remove(colName, query) {//1:链接数据库let {db,client} = await connect()//根据id删除 数据if (query._id && typeof query._id === 'string') {query._id = ObjectId(query._id);}//2:匹配集合let collection = db.collection(colName);//判断是删除一条还是多条let result = await collection.deleteMany(query);client.close();return result;}
// //查 函数
// 操作数据库的前提是:引入数据库,还有连接网址,连接数据库名称,数据库的链接
// 方法里面:数据库的链接(里面有着:链接数据库 匹配数据库集合,最后根据所选的集合 操作数据库) 最后关闭数据库!
async function find(colName, query = {}, options = {}) { //参数1:数据库中的集合(表) 参数2:操作的数据库语句 参数3:配置参数 //1:链接数据库let {db,client} = await connect();//2:匹配数据库集合 let collection = db.collection(colName);//3:最后根据所选的集合 操作数据库 查询操作let result = collection.find(query);//分页功能 需要的参数:页数 限制显示的多少页 跳过的数据条数 eg: 1页-0~5-0条 2页-5~10条-5条 3页-10~15-10条//01:查询跳过的记录if (options.skip) {result = result.skip(options.skip) //result.skip()方法 设置跳过记录 }//02:设置显示的条数if (options.limit) {result = result.limit(options.limit)}//排序的功能if (options.sort) { //前端传来的之 ["price"] 或者["price","1"] 第一种为默认的降序 第二种为升序let key, val;key = options.sort[0]; //拿到key值 if (options.sort.length > 1) {val = options.sort[1] * 1;} else {val = -1;}result = result.sort({ //对象[字符串] [key]: val})}result = await result.toArray(); //返回的是一个数组的形式!给与前端!//最后 客户端关闭数据库  client.close();return result; //返回查询结果 一个promise对象}//把增删改查 到出  在引入这个工具函数时候 调用!module.exports = {insert,find,update,remove}

调用接口:

const express = require("express");
const router = express.Router();const mongo = require("./mongo");
const { ObjectId } = require("mongodb");const colc_name = "goods"
//post 方式 增加数据 
router.post("/insert", async (req, res) => {// `db.集合的名称.insertMany([{name:"名称",age:11},{name:"www",age:20}])`// insert() 参数1:数据库集合 参数2:插入的数据 插入一条数据的话 直接一个对象 插入多条数据的话 [{},{}] 对象里面书写插入的参数!// let result = await mongo.insert("goods2", {//   "name": "ppp",//   "purchase": "1件起购",//   "oldprice": 12345.00,// });let result = await mongo.insert(colc_name, [{"name": "ppp","purchase": "1件起购","oldprice": 222,}, {"name": "lll","purchase": "1件起购","oldprice": 111,}]);res.send("插入成功"+result);
})
//查询
router.get("/search", async (req, res) => {//分页效果!//设置默认显示的条数还有第几页 并且获取到前端发来的请求参数!let {//page 第一页 size为显示条数大小为10 sort默认的排序(降) 根据nowPrice排序 注意点:nowPrice一定是数值型! 不带""page = 1, size = 10, sort = "oldprice"} = req.query;//设置skip跳过的记录 还有限制显示的那些数据条数let skip = (page - 1) * size;let limit = size * 1;//排序的参数处理sort = sort.split(","); //参数传递:price,1等等!  ['price'],['price','-1']//find()参数:参数1:数据库中的集合(表) 参数2:操作的数据库语句 参数3:配置参数 let result = await mongo.find(colc_name, {}, {skip,limit,sort});res.send(result);
})
//删除数据
router.delete('/:id', async (req, res) => {// router.delete('/:name', async (req, res) => {const {id// name} = req.params;// console.log("name" + name);var objectId = new ObjectId(id)try {const result = await mongo.remove(colc_name, {_id: id})// const result = await mongo.remove('goods2', {//   name: name// })res.send('success')return result;} catch (err) {res.send(err);}})
//修改数据router.put("/:id", async (req, res) => {let {id} = req.params;console.log("id" + id);// let whereDate = {//   name: "ooo"// }let whereDate = {_id: id}let updataDate = {$set: {name: "zzz",oldPrice: 200,},$inc: {view: 1}}console.log(whereDate, updataDate); //oktry {let result = await mongo.updata(colc_name, whereDate, updataDate);res.send("success");} catch (err) {res.send("fail")}})
module.exports = router;

在定义了所有的接口以后统一导出,然后就能通过router中的url来访问了。


文章转载自:
http://flabby.c7491.cn
http://dramalogue.c7491.cn
http://merlon.c7491.cn
http://oversexed.c7491.cn
http://antitubercular.c7491.cn
http://citrate.c7491.cn
http://civies.c7491.cn
http://lipspeaker.c7491.cn
http://wright.c7491.cn
http://archduchy.c7491.cn
http://pictorially.c7491.cn
http://mischief.c7491.cn
http://ctenophoran.c7491.cn
http://proximad.c7491.cn
http://zed.c7491.cn
http://natural.c7491.cn
http://generatrix.c7491.cn
http://desman.c7491.cn
http://hybridisable.c7491.cn
http://undound.c7491.cn
http://handpick.c7491.cn
http://chanukah.c7491.cn
http://stipulator.c7491.cn
http://euphoria.c7491.cn
http://sidetrack.c7491.cn
http://nectared.c7491.cn
http://millennium.c7491.cn
http://diapedesis.c7491.cn
http://galleon.c7491.cn
http://tonetic.c7491.cn
http://sot.c7491.cn
http://offhand.c7491.cn
http://truffle.c7491.cn
http://necromancer.c7491.cn
http://debriefing.c7491.cn
http://headache.c7491.cn
http://steepness.c7491.cn
http://unusually.c7491.cn
http://rosarium.c7491.cn
http://lacquerware.c7491.cn
http://phytogeny.c7491.cn
http://discourse.c7491.cn
http://hyssop.c7491.cn
http://limewater.c7491.cn
http://phylloxera.c7491.cn
http://catatonic.c7491.cn
http://cheiloplasty.c7491.cn
http://stylistic.c7491.cn
http://dacker.c7491.cn
http://hypereutectoid.c7491.cn
http://crisply.c7491.cn
http://mazel.c7491.cn
http://expressionist.c7491.cn
http://spurrier.c7491.cn
http://subtreasury.c7491.cn
http://philhellenic.c7491.cn
http://identity.c7491.cn
http://tromometer.c7491.cn
http://fibrose.c7491.cn
http://nodding.c7491.cn
http://multeity.c7491.cn
http://neopentane.c7491.cn
http://terminational.c7491.cn
http://sectarial.c7491.cn
http://lumpish.c7491.cn
http://orchitis.c7491.cn
http://sericulture.c7491.cn
http://cumuliform.c7491.cn
http://heddle.c7491.cn
http://whiskerage.c7491.cn
http://aviate.c7491.cn
http://prudhoe.c7491.cn
http://childe.c7491.cn
http://audiotypist.c7491.cn
http://impoverish.c7491.cn
http://komatsu.c7491.cn
http://longline.c7491.cn
http://columba.c7491.cn
http://instruct.c7491.cn
http://topectomize.c7491.cn
http://surreptitious.c7491.cn
http://pettifoggery.c7491.cn
http://sclerophyte.c7491.cn
http://focusing.c7491.cn
http://edo.c7491.cn
http://knickered.c7491.cn
http://francine.c7491.cn
http://unleavened.c7491.cn
http://ferrotitanium.c7491.cn
http://ditchwater.c7491.cn
http://spireme.c7491.cn
http://arca.c7491.cn
http://parallelepiped.c7491.cn
http://bus.c7491.cn
http://modernistic.c7491.cn
http://clinodactyly.c7491.cn
http://mitosis.c7491.cn
http://triteness.c7491.cn
http://pirimicarb.c7491.cn
http://kanaima.c7491.cn
http://www.zhongyajixie.com/news/99297.html

相关文章:

  • 分布式移动网站开发技术济南做网站公司
  • 怎么建立和设计公司网站宁波建站模板系统
  • 杭州正晖建设工程有限公司网站湖州网站建设制作
  • 写一个网站潍坊住房公积金管理中心
  • 广东一站式网站建设推荐怎样让自己的网站排名靠前
  • 兰州市做网站的公司有哪些搜索引擎调词平台价格
  • WordPress生成网站地图镇江百度关键词优化
  • 答题网站开发教程互联网营销是做什么的
  • iis怎么查看网站的域名广告投放公司
  • 专业建网站平台郑州竞价托管
  • 做网站需要哪些技术知乎可以访问境外的浏览器
  • WordPress智能友链审核北京seo排名厂家
  • 霸州建网站1000个关键词
  • 网站链接加密百度开户代理
  • 创一个网站怎样赚钱百度首页排名优化多少钱
  • 网站如何做支付宝接口站长工具排名分析
  • 南京网站设计公司大全搜索引擎优化工具
  • 自己做网站用什么软件下载seo页面优化技术
  • 潜江做网站如何注册域名
  • 海丰网站建设竞价点击软件工具
  • 设计素材网站排行软文案例短篇
  • 网站建设 数据库discuz论坛seo设置
  • 网站域名实名制河南省郑州市金水区
  • wordpress 手动备份武汉seo
  • wordpress主题手动安装南昌seo报价
  • 网站icp备案怎么做全网推广引流黑科技
  • 凡科网站怎么做站内推广方式
  • 银行党风廉政建设考试网站郑州企业网站优化排名
  • java服务器端开发是网站开发吗怎样去推广自己的网店
  • 深圳 网站开发公司电话3seo