MongoDB

MongoDB

标签(空格分隔): 数据库


1. 前言

MongoDB是一个数据库。是介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富,最像关系数据库的。

1.1 NoSQL(not only SQL)

  1. 关系数据库管理系统(RDBMS).
  2. 关系模型非常适合于客户服务器变成,世界否花数据存储和商务应用的主导技术。
  3. NoSQL是全新的数据库革命性运动,擅长运用非关系的数据存储。
  4. NoSQL用于超大规模数据存储(谷歌或Facebook每天为用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

1.2 RDBMS VS NoSQL

RDBMS

  • 高度组织结构化数据
  • 结构化查询语言(SQL)
  • 数据和关系都存储在单独的表中
  • 数据操纵语言,语言定义数据
  • 严格的一致性
  • 基础事务

NoSQL

  • 代表着不仅仅是SQL
  • 没有声明性查询语言
  • 没有预定义的模式
  • 键值对存储、列存储、文档存储、图形数据库
  • 最终一致性,而非ACID属性
  • 非结构化和不可预知的数据
  • CAP定理
  • 高性能,高可用性和可伸缩性

1.3 关系型数据库和非关系型数据库

  • 关系指的是表和表之间存在关系

  • 所有的关系型数据库都需要SQL语言来操作

  • 所有的关系型数据库在操作前都需要设计表结构

  • 数据表支持约束

    • 唯一的
    • 主键
    • 默认值
    • 非空
  • 非关系数据库非常的灵活

    • 数据库==》数据库
    • 数据表==》集合(数组)
    • 表记录==》文档对象
  • MongoDB不需要设计表结构

  • 可以任意往里面存数据

1.4

在这里插入图片描述

2. 安装

  • 去www.mongodb.com下载安装包
  • 安装包安装完成后
  • 配置环境,进入文件安装目录直到/bin内,然后在左侧的此电脑图标上右键单击选择属性,高级系统设置,环境变量,点击Path,新建,将bin所在的文件位置复制放在空白栏中确定即可。
  • 在安装盘根目录下创建一个data/db文件夹,作为存放文件的默认位置
  • 开启:命令提示符输入 mongod回车即可启动
  • 关闭:ctrl+c即可关闭
  • 连接数据库:mongo回车
  • 断开连接:在连接状态输入exit回车

3. 基本命令(命令提示符输入)

  • show dbs 查看数据库列表
  • db 查看当前操作的数据库
  • use 数据库的名称 切换到指定数据库(如果没有会新建)
  • db.students.insertOne({"name":"Jack"})插入一条数据
  • show collections 显示集合
  • db.students.find() 显示所有数据

4. 在Node中使用MongoDB

4.1 使用官方的MongoDB包来操作

node-mongodb-native

4.2 使用第三方mongoose来操作

  • mongoose:是基于官方包进行了再一次的封装
  • 官方网址:mongoosejs.com
    • 官方网站上有许多API,我只是试用了如下的API,有其他需求请去官网查询

4.3 (创建)增加数据库数据

  • 设计Schema,发布Model
var mongoose=require('mongoose')

var Schema=mongoose.Schema

mongoose.connect('mongodb://localhost/flower',{useMongoClient:true})

//设计集合结构
var flowerSchema=new Schema({
	flowername:{
		type:String,
		required:true
	},
	florescence:{
		type:String,
		required:true
	},
	Pharmacodynamics:{
		type:String
	}
})
//将文档结构发布为模型(大写名词单数)
var Flower=mongoose.model('Flower',flowerSchema)
  • 增加数据
var Rose=new Flower({
	flowername:"Rose",
	florescence:"4-5月",
	Pharmacodynamics:"其性甘微苦,温、无毒。入肝脾二经。 功效:理气解郁、和血散瘀。主治肝胃气痛,新久风痹,吐血咯血,月经不调,赤白带下,痢疾、乳痈,肿毒。《食物本草》谓其“主利肺脾、益肝胆,食之芳香甘美,令人神爽"
})
//持久化存储数据
Rose.save(function (err,ret) {
	if(err){
		console.log("数据保存失败")
	}else{
		console.log("保存成功")
		console.log(ret)
	}
})
  • 查询数据
//查询数据库所有数据(在所有数据存入数据库之后),数组[]形式
Flower.find(function (err,ret) {
    if(err){
    	console.log("查询失败")
    }else{
    	console.log(ret)
    }
})
//按照条件查询数据库数据,[]形式
Flower.find({
	flowername:'Pansy'
},function (err,ret) {
    if(err){
    	console.log("查询失败")
    }else{
    	console.log(ret)
    }
})
//查询一个数据,{}形式,没有条件查询第一个
Flower.findOne({
	flowername:"Pansy",
	florescence:"4-7月"
},function (err,ret) {
	if(err){
		console.log("查询失败")
	}else{
		console.log(ret)
	}
})

删除数据

//按照条件查询数据库数据,删除几个会有提示,所有符合条件的都会被删除
Flower.remove({
	flowername:'Pansy'
},function (err,ret) {
    if(err){
    	console.log("删除失败")
    }else{
    	console.log(ret)
    }
})

更新内容

//按照条件更新数据,第一个参数是id,第二个参数是更改内容,第三个参数是回调函数
Flower.findByIdAndUpdate('查询数据库可以看到生成的id',
	{flowername:'Sun'},
	function(err,ret){
		if(err){
			console.log('更新失败')
		}else{
			console.log('更新成功')
			console.log(ret)
		}
	})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值