mongodb 和 mongoose 初探
mongodb
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
1. 安装相关
1.1 下载
官网下载地址 :官网下载社区版
1.2 安装及环境配置
安装
下载的是 zip 解压到想要的路径即可
配置
我的电脑 --> 属性 --> 高级系统设置 --> 环境变量 --> 编辑用户变量的 path --> 添加解压mongondb路径下的bin目录即可
1.3 检测
在cmd控制台输入
mongod --version出现版本信息及安装成功
2. 使用相关
2.1 开启和关闭数据库
启动
# mongodb 默认使用执行 mongod 命令,会调用当前目录盘符根目录下的 /data/db 文件夹作为数据存储目录
# 所以如果第一次在新的盘符下执行mongod前应手动创建一个 /data/db 目录
mongod
在执行路径根目录下没有 data/db 目录会导致报错 启动失败
如果想自定义数据存储目录,可以
mongod --dbpath=你想要的存储的路径
停止
Ctrl + C 或者直接关闭控制台即可
2.2 连接、退出数据库
连接
在开启的前提下,再开一个cmd控制台窗口
执行:
# 该命令默认连接本机的 MongoDB服务
mongo
注意:连接数据库也要保证目录下的data/db 目录存在,否则的话可能会导致连不上
退出
退出数据库不是关闭数据库
# 在连接的状态窗口下输入 exit 接口退出
exit
2.3 基本命令
show dbs查看显示所有数据库
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
上面三个数据库是系统数据库,我们最好不要操作他们
db查看当前操作的数据库
use 数据库名称
切换到指定的数据库,如果没有,则新建。。。
开发过程中一般不使用黑窗口cmd来操作数据库
3. 在node中使用MongoDB
3.1 使用官方的 mongodb 包来操作
里面提供了很多数据库操作的API, 但是对于开发来说,还是相比较为底层,所以开发中也不常用
3.2 使用第三方 mongoose 操作数据库
第三方包,基于MongoDB官方的 mongodb 包又进行了一次封装。
安装
npm install mongoose
hello world
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
const Cat = mongoose.model('Cat', { name: String });
const kitty = new Cat({ name: 'Zildjian' });
kitty.save().then(() => console.log('meow'));
4. mongoose初次使用小demo
4.1 起步 初始化
var mongoose = require('mongoose')
// 数据库中的Schema,为数据库对象的集合
var Schema = mongoose.Schema
// 连接数据库
// 指定连接的数据库不需要存在,当你插入第一条数据的之后会自动创建出来
mongoose.connect('mongodb://localhost/mytest')
// 设计集合结构
// 约束数据的类型及其他的一些要求 避免脏数据
var userSchema = new Schema({
username: {
type: String,
required: true // 必须有 不能为空
},
password: {
type: String,
required: true
},
email: {
type: String
}
})
// 将文档结构发布为模型
// mongoose.model 方法就是将一个架构发布为 model
// 第一个参数: 传入一个首字母大写名词单数字符串,表示数据库名称
// mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称
// 例如:这里的User 最终会编程 users 集合名称
// 第二个参数: 架构 Schema
// 返回值: 模型构造函数
// 有了这个模型构造函数之后,就可以对 这个集合中的数据 进行我们想要的操作了
var User = mongoose.model('User', userSchema)
4.2 添加数据
save()
...
var admin = new User({
username: 'admin',
password: '123456',
email: 'admin@qq.com'
})
admin.save(function (err, ret) {
if (err) {
console.log('保存失败')
} else {
console.log('保存成功')
console.log(ret)
}
})
这里的输出:
保存成功
{ _id: 5bb87029fb8d521954db7d25,
username: 'admin',
password: '123456',
email: 'admin@qq.com',
__v: 0 }
4.3 查询数据
查询所有
User.find(function(err, ret) {
if (err) {
console.log('error')
} else {
console.log(ret)
}
})
按条件查询
User.find({
// 筛选条件
username: 'zs' // 筛选出username 为 zs 的数据
},function (err, ret) {
if (err) {
console.log('error')
} else {
console.log(ret)
}
})
查询一个 findOne
User.findOne({
username: 'zs' // 筛选出username 为 zs 的数据
}, function (err, ret) {
if (err) {
console.log('error')
} else {
console.log(ret)
}
})
这里查找一个 返回的不再是一个数组,而是一个对象
找不到即返回
null不加筛选条件就返回第一条数据
4.4 删除数据
User.remove({
username: 'admin'
}, function (err) {
if (err) {
console.log('error')
}
})
4.5 更新数据
User.findByIdAndUpdate('5bb87a44b70a9508346d35f9', {
password: '123'
}, function (err) {
if (err) {
console.log('更新失败')
} else {
console.log('更新成供')
}
})
以上的操作只是写简单的基本操作,更加复杂的操作情景可一查看官网api。
mongodb 和 mongoose 初探的更多相关文章
- Practical Node.js (2018版) 第5章:数据库 使用MongoDB和Mongoose,或者node.js的native驱动。
Persistence with MongoDB and Mongoose https://github.com/azat-co/practicalnode/blob/master/chapter5/ ...
- MongoDB 和 Mongoose 04
一.安装 1. 相关 https://www.mongodb.org/dl/win32/ MongoDB的版本偶数版本为稳定版,奇数版本为开发版 MongoDB对于32位系统支持不佳,所以3.2版本以 ...
- 【重学Node.js 第3篇】mongodb以及mongoose的使用
mongodb以及mongoose的使用 本篇为这个系列的第三篇,想看更多可以直接去github的项目:https://github.com/hellozhangran/happy-egg-serve ...
- 前端知识点回顾——mongodb和mongoose模块
mongodb和mongoose模块 数据库 数据库有关系型数据库(MySQL)和非关系型数据库(mongodb),两者的语法和数据存储形式不一样. mySQL 关系型数据库 类似于表格的形式,每一条 ...
- mongodb用mongoose取到的对象不能增加属性
先定义了一个article的schema var mongoose = require('mongoose'); var Schema = mongoose.Schema; exports.schem ...
- 前端笔记之NodeJS(四)MongoDB数据库&Mongoose&自制接口&MVC架构思想|实战
一.MongoDB数据库 1.1 NoSQL简介 随着互联网web2.0网站的兴起,传统的SQL数据库(关系数据库)在应付web2.0网站,特别是超大规模和高并发的SNS(social network ...
- MongoDB及Mongoose的记录
MongoDB是一种NoSQL的文档型数据库,其存储的文档类型都是JSON对象. 在node.js中由于代码都是异步执行,且nosql也没有“事物”这一定义,所以日常使用中很难保证数据库操作的原子性. ...
- mongoDB与mongoose
mongodb是一个基于分布式文件存储的文档型数据库 MongoDB 是一个介于关系数据库和非关系数据库之间的产品 MongoDB 最大的特点是他支持的查询语言非常强大,而且还支持对数据建立索引 官方 ...
- [转] mongoDB与mongoose
mongoDB简介 mongoDB与一些关系型数据库相比,它更显得轻巧.灵活,非常适合在数据规模很大.事务性不强的场合下使用.同时它也是一个对象数据库,没有表.行等概念,也没有固定的模式和结构,所有的 ...
随机推荐
- hdoj 1257最少拦截系统
/*最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- 你真懂JavaScript吗?
正文 题目1: if (!("a" in window)) { var a = 1; } alert(a); 题目2 var a = 1, b = function a(x) { ...
- TI C66x DSP 系统events及其应用 - 5.6(INTMUX)
系统event 0~127(包含了eventCombiner的输出event 0~3)与CPU支持的12个可屏蔽中断是通过INTMUX寄存器进行映射的(不包含NMI.RESET).能够选择将系统eve ...
- android中LocalBroadcastManager的使用
今天遇到一个acitivity之间通信的问题,因为我们是用TabActivity包裹了Activity(我们称之为A).所以这两个Activity是同一时候存在的.当在TabActivity中启动其它 ...
- tflearn Training Step每次 We will run it for 10 epochs (the network will see all data 10 times) with a batch size of 16. n_epoch=10, batch_size=16
Training TFLearn provides a model wrapper 'DNN' that can automatically performs a neural network cla ...
- B1968 [Ahoi2005]COMMON 约数研究 数论
大水题,一分钟就做完了...直接枚举1~n就行了,然后在n中判断出现多少次. 题干: Description Input 只有一行一个整数 N(0 < N < 1000000). Outp ...
- Java-Zipkin:Zipkin 介绍
ylbtech-Java-Zipkin:Zipkin 介绍 1.返回顶部 1. 介绍 Zipkin 是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 ...
- 27. Remove Element[E]移除元素
题目 Given an array nums and a value val, remove all instances of that value in-place and return the n ...
- BZOJ 1116 并查集
思路: 如果 每个联通块 边数>=点数 就OK 用并查集搞 //By SiriusRen #include <cstdio> #include <cstring> #in ...
- king枚举帮助类
可以方便的实现枚举 枚举 public enum DeptType { [Description("科室1")] Professional = , [Description(&qu ...