MongoDB简介、在node中使用MongoDB

MongoDB数据库简介:

使用MongoDB的好处是不用SQL语句,它提供了对应的API,其功能和MYSQL基本相同,是最像关系型数据库的非关系型数据库;不需要设计表的结构,文档相当于json,如果想要了解更多,可以阅读相关文档:https://www.runoob.com/mongodb/mongodb-tutorial.html;

关系型数据库:表就是关系,表与表之间的关系,所有的关系型数据库都要通过SQL语言来操作。

非关系型数据库:比较灵活,没有表,有的就是键值对的形式。

MongoDB使用步骤如下:

	 // 1.安装步骤:// 1.打开官网:https://www.mongodb.com ---> software ---> 选择免费Community server下载,注意一定要选择msi格式。// 2.将下载的程序双击打开,点击下一步,出现custom和complete时选择custom自定义目录安装,不勾选install MongoDB compass,最后点击install按照提示操作,finsh完成安装。// 3.打开命令行mongod --version查看版本,如果显示未安装,就去改变path指向的变量(复制mongodb的bin文件路径---我的电脑---属性---高级系统设置---环境变量---编辑path----新建添加复制的路径)// 2.启动:// 1.打开命令行键入命令:mongod 回车  , 如果启动不成功,则需要在安装文件所在盘符的根目录手动新建:data/db/    or   服务面板找到MongoDB服务启动// 2.改变数据存储目录键入命令:mongod --dbpath=数据储存目录路径// 3.停止:在控制窗口Ctrl + C    or    服务面板找到MongoDB点击停止  // 4.连接数据库:新打开命令窗口键入命令:mongo 回车默认连接本机数据库    or 可视化面板       ,退出a键入命令:exit// 5.其它基本命令:1.show dbs---显示所有数据库  // 2.use 数据库名----切换到指定数据(没有回自动建立),实际操作是在node中操作,一般不在命令窗口操作。// 在node中操作MongoDB:// 1.使用官方的mongodb包操作:https://www.github.com/mongodb/node-mongodb-native(查阅文档使用)// 2.也可以使用第三方基于mongodb的包 mongoose 操作:http://mongoosejs.com/(查阅文档使用),步骤:// 1.命令行键入命令:npm install mongoose --save;-----------使用npm安装mongoose// 2.const mongoose = require('mongoose');-----------------载入mongoose模块// 3.mongoose.connect('mongodb://localhost/test', {useNewUrlParser: true})-------连接MongoDB数据库// 4.const db = mongoose.connection;  db.on('error', console.error.bind(console, 'connection error:'));  db.once('open', function() {// we're connected!})-----测试数据库连接是否成功,可以不用写这段代码// 5.const kittySchema = new mongoose.Schema({name: String})--------从Schema中派生一切,可以不用写这段代码// 6.const Kitten = mongoose.model('Kitten', kittySchema)------模式编译成模型// 7.const silence = new Kitten({ name: 'Silence' });  console.log(silence.name); --------模型是用来构造文档的类,创建一个文档(实例化一个Kitten)// 8.Kitten.save(function (err) {if (err) return console.error(err);console.log('Kitten')})-------数据持久化// 9.Kitten.find(function (err) {if (err) return console.error(err);console.log('Kitten');})------查询数据

在node中使用mongoose:

	 // 在安装完mongoose的情况下使用:// 1.载入mongoose模块:var mongoose = require('mongoose');// 2.连接数据库:mongoose.connect('mongodb://localhost/test',{useMongoClient:true});// 3.这段代码加不加都可以,后面学习promise时会具体讲解:mongoose.Promise = global.Promise;// 4.创建一个模型(设计数据库):var Cat = mongoose.model('Student',{name:String});//Cat为类似表名,自己会生成小写复数的集合名,把表称作集合// 5.持久化:jack.save(function (err) {if (err) {console.log(err);} else {console.log('meow 响应出结果');};});

mongoose中增删改查:

	var mongoose = require('mongoose');var Schema = mongoose.Schema;// 1. 连接数据库:指定连接的数据库可以不需要存在,当你插入第一条数据之后就会自动被创建出来:mongoose.connect('mongodb://localhost/itcast');// 2. 设计文档结构架构(表结构),字段名称就是表结构中的属性名称,约束的目的是为了保证数据的完整性,不要有脏数据:var userSchema = new Schema({username: {type: String,required: true // 必须有},password: {type: String,required: true},email: {type: String}})// 3. 将文档结构发布为模型//    mongoose.model 方法就是用来将一个架构发布为 model//    第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称//                 mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称//                 例如这里的 User 最终会变为 users 集合名称//    第二个参数:架构 Schema,即文档结构架构//    返回值:模型构造函数var User = mongoose.model('User', userSchema);// 4. 当我们有了模型构造函数之后,就可以使用这个构造函数对 users 集合中的数据增删改查:// 新增数据:var admin = new User({username: 'zss',password: '123456',email: 'admin@admin.com'});admin.save(function (err, ret) {if (err) {console.log('保存失败');} else {console.log('保存成功');console.log(ret);}});//查询数据:User.find(function (err, ret) {if (err) {console.log('查询失败')} else {console.log(ret)}})User.find({username: 'zs'}, function (err, ret) {if (err) {console.log('查询失败')} else {console.log(ret)}})User.findOne({username: 'zs'}, function (err, ret) {if (err) {console.log('查询失败')} else {console.log(ret)}})// 删除数据:User.remove({username: 'zs'}, function (err, ret) {if (err) {console.log('删除失败')} else {console.log('删除成功')console.log(ret)}})// 更新数据:User.findByIdAndUpdate('5a001b23d219eb00c8581184', {password: '123'}, function (err, ret) {if (err) {console.log('更新失败')} else {console.log('更新成功')}})

数据可视化工具mongobooster:

	// 数据可视化工具MongoBooster的使用步骤:// 1.下载地址:https://nosqlbooster.com/// 2.下载后双击,一路点击next// 3.双击打开,create一个数据库并测试连接是否成功// 4.对数据进行修改// node操作数据库://数据库操作模块var mongoose = require('mongoose')// 连接到mongoose数据库当中// connect连接     content内容   端口号(27017为固定端口号)// 端口号后面为数据库名称,如果有这个数据库,则直接连接,如果没有数据库则先创建,在连接mongoose.connect('mongodb://127.0.0.1:27017/test', function(err) {if (err) {console.log('数据库连接失败')} else {console.log('数据库连接成功')}})// 数据库 =>数据表  一个数据库里面可以有多个不同类型的数据表// 数据表 => 数据  一个数据表里面可以有多个不同类型的数据// schema 图表var messageSchema = new mongoose.Schema({// 该数据为字符串类型connect: String,name: String,age: Number,hasStar: Boolean})// model  模型var Message = mongoose.model('messageBox', messageSchema)var first = new Message({content: '今天是周日',name: '小熊',age: 3,hasStar: false})// 保存first.save(function(err) {if (err) {console.log('保存失败')} else {console.log('保存成功')}})// fs.readFile(,function(err,data))Message.find(function(err, data) {if (err) {console.log('数据库读取失败')} else {//   读取的时候返回的是数组[ ]console.log('数据库读取成功')console.log(data)}})

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

喜用神最正确的算法_各种电磁仿真算法的优缺点和适用范围(FDTD, FEM和MOM等)...

从实际工程应用的角度谈一下我对这几种算法的理解。先说结论,FDTD算的快但是不精确,可以用来算电大尺寸的物体,要是一个物体的尺寸大于10个波长,一般的服务站是跑不动FEM的,那必须得用FDTD了。FEM最经典的电磁仿真软件…

Linux下实现自动设置SSH代理

SSH的巨大价值体现在能够配置为代理服务器上。不像在Windows下每次还需要手动登录设置,Linux有很好的工具链能够实现自动设置SSH代理,就是expect和ssh的联合使用,再加上proxychains,任何程序都可以享用代理了,在此我简…

node中操作MySQL

node操作MySQL数据库: 在node中操作MySQL数据库的基本流程如下: // node操作MySQL需要在npm官网下载mysql包并载入node执行代码:// 1.载入MySQL数据库包var mysql require(mysql);// 2.创建连接:var connection mysql.createCo…

百度UEditor编辑器使用(二)

本文摘自:http://www.cnblogs.com/pmpen/archive/2011/09/19/2181811.html 首先感谢分享 百度WEB前端设计部推出一款开源的编辑器UEditor http://ueditor.baidu.com/index.html ,这款编辑器相当强大,它提供了百度地图,google地图…

护士资格证延续注册WEB服务调用失败_服务熔断

熔断机制是应对服务雪崩效应的一种微服务链路保护机制,当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回”错误”的响应信息。当检测到该节点微服务响应正常后恢复调用链路…

AssetManager asset的使用

Android 系统为每一个新设计的程序提供了/assets文件夹,这个文件夹保存的文件能够打包在程序里。/res 和/assets的不同点是,android不为/assets下的文件生成ID。假设使用/assets下的文件,须要指定文件的路径和文件名称。以下这个样例&#xf…

vmware 快照用关机吗_PS板绘上色的骚操作,打破初学者上色残的瓶颈!|快照|绘画|初学者|配色|色阶...

PS板绘上色的骚操作,打破初学者上色残的瓶颈!初学者如何入门绘画?学习板画难吗?怎样才能学习好绘画?想必这些都是绘画初学者们经常在想的问题吧,就是不知道如何才能学习好绘画,然后绘画出自己想…

vue概述、vue文件特点、vue核心思想、双向数据流、单文件、启动一个vue项目、声明式渲染

vue介绍: Vue:当前较火的MVVM框架,轻量、简介、高效、组件化、数据驱动,模块和渲染函数的弹性选择,简单的语法及项目创建,渲染速度极快,基于Virtual Dom,利用虚拟DOM实现快速渲染&a…

jQuery特效手风琴特效 手写手风琴网页特效

今天写一个简单的手风琴效果,不用插件,利用强大的jQuery,写一个手风琴效果。 页面预览,请点击这里预览: 手风琴预览案例分析: html结构 就是一个大盒子里面放着5个li,每个li的小小是200像素&a…

db2 删除索引_MYSQL进阶——索引

索引模型hash索引hash索引主要适用于等值查询的场景,排序,模糊搜索等场景并不适用有序数组有序数组可用于非等值查询,排序等场景,但是由于写数据时需要对数组中的元素进行位移,所以一般用于静态数据的场景二叉树二叉树…

javascript中es6语法

es6语法简介: // 1.历史:// 1995-----JavaScript诞生// 1997-----ECMAScript标准确立// 1999-----ES3出现,与此同时IE5风靡一时// 2009-----ES5出现,现在绝大所数使用的是ES5// 2015-----ES6/ECMAScript2015出现// 2.函数的Rest参…

react 导航条选中颜色_调整安卓手机的颜色以更好地查看一切

并非所有人都有相同的区分颜色的能力。我们对屏幕上色彩配置的需求甚至口味可能会因人而异。幸运的是,Android为我们提供了多种本地工具,能够调整手机的颜色。我们的手机显示数百万种音调,这些音调是由屏幕配置或终端如何解释从某些应用程序接…

vue项目目录结构分析、过滤器、vue文件中基础template、script、style

项目目录结构: 1.在一个项目中一般的目录结构为:my_project------------项目文件夹|____src--------------------------------存放人可以看懂的源代码,具备一定功能划分,mvc思想|____dist-------------------------------存放真实…

linux进程调度之 FIFO 和 RR 调度策略

转载 http://blog.chinaunix.net/uid-24774106-id-3379478.html linux进程调度之 FIFO 和 RR 调度策略 2012-10-19 18:16:43分类: LINUX 作者:manuscola.beangmail.com 博客地址:bean.blog.chinaunix.net 最近花了10几天的时间&#xff0…

echarts 获取点击的y轴数值_有机磷酸催化对醌的不对称直接加成反应合成轴手性芳基醌类化合物...

有机磷酸催化对醌的不对称直接加成反应合成轴手性芳基醌类化合物本文作者:Summer轴手性联芳基二醇骨架广泛存在于天然产物、生物活性分子、有用的手性配体以及催化剂中(Figure 1a),因此,轴手性联芳基二醇化合物的合成受到广泛关注且已经取得了…

vue中自定义指令、组件化、生命周期、节流和防抖、获取DOM、mint-ui简介、过渡和动画

自定义指令&#xff1a; vue中通过directive方法自定义指令&#xff0c;如&#xff1a;自定义一个v-focus指令&#xff1a; <script>Vue.directive(focus, {//通过directive(指令名,{配置})注册全局指令inserted: function (el) {//inserted:表示当自定义指令插入元素后…

H264解码的一个測试程序

网上看到的一个H264视频格式的解码測试程序&#xff0c;能够用来參考其逻辑流程。 代码例如以下&#xff1a; Test_Display_H264(){ in_fd open(H264_INPUT_FILE, O_RDONLY); //video file open fstat(in_fd, &s); …

spring框架 web开发_go语言web开发框架学习:Iris框架讲解(一)

Golang介绍Go语言是谷歌推出的一种全新的编程语言&#xff0c;可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说&#xff1a;我们之所以开发Go&#xff0c;是因为过去10多年间软件开发的难度令人沮丧。谷歌资深软件工程师罗布派克(R…

vue-router路由、mixin混入、vue-resource、axios、计算属性watch、moment.js、vuex、vue-cli、数据双向绑定、搭建vue环境、vue实例、配置启动项

路由vue-router介绍: // 1.前端路由核心&#xff1a;锚点值的改变&#xff0c;根据不同的锚点值&#xff0c;渲染指定dom位置的不同数据。// 2.vue中&#xff0c;模板数据不是通过ajax请求的&#xff0c;而是调用函数获取到模板内容// 3.vue-router使用方式&#xff1a;// 1.下…

最小路径覆盖,最小点覆盖,最大独立点集(转)

来自&#xff1a;http://blog.csdn.net/l04205613/article/details/6278394 node 1&#xff1a;最小路径覆盖 在一个&#xff30;&#xff38;&#xff30;的有向图中&#xff0c;路径覆盖就是在图中找一些路经&#xff0c;使之覆盖了图中的 所有顶点&#xff0c;且任何一个顶…