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与一些关系型数据库相比,它更显得轻巧.灵活,非常适合在数据规模很大.事务性不强的场合下使用.同时它也是一个对象数据库,没有表.行等概念,也没有固定的模式和结构,所有的 ...
随机推荐
- HDU 4535
裸 的错排.... #include <iostream> #include <cstdio> #include <cstring> #include <al ...
- Swift----安装,简单介绍
安装: 眼下最新的稳定版是 Swift 0.94.1 1.下载:wget http://swiftlang.org/packages/swift-0.94.1.tar.gz 2.解压:tar xfz ...
- unity font研究小结
项目用ngui制作的界面.字体使用了unity默认的Arial,公布后在一些android手机上发现中文不显示,就此作了一些调查. 參考unity的font说明文档:http://docs.unity ...
- Lua 与C/C++ 交互系列:注冊枚举enum到Lua Code中
在Lua Code中注冊C/C++的枚举很easy,就像注冊全局变量一样.我们使用枚举名称作为命名空间,来避免注冊的枚举发生冲突.注冊的枚举存储在全局环境(线程环境)中. 当在Lua Code中訪问枚 ...
- mysql查询count
Every derived table must have its own alias 每个派生出来的表都必须有一个自己的别名 一般在多表查询时,会出现此错误. 因为,进行嵌套查询的时候子查询出来的的 ...
- 根据日期获取,x岁x月x天
c#: DateTime startDate = new DateTime(); DateTime endDate = new DateTime(); ; ; ; if (endDate.Month& ...
- (Go)01.Windows 安装 Go语言开发环境以及使用
一.Go语言下载 go语言官方下载地址:https://golang.org/dl/ 找到适合你系统的版本下载,本人下载的是windows msi版本.也可以下载Source自己更深层次研究go语言 ...
- POJ 2513 trie树+并查集判断无向图的欧拉路
生无可恋 查RE查了一个多小时.. 原因是我N define的是250500 应该是500500!!!!!!!!! 身败名裂,已无颜面对众人.. 吐槽完了 我们来说思路... 思路: 判有向图能否形成 ...
- 从 Zero 到 Hero ,一文掌握 Python--转
https://www.oschina.net/translate/learning-python-from-zero-to-hero 第一个问题,什么是 Python ?根据 Python 之父 G ...
- 控件——DataGridview
控件:DataGridview 用来显示数据, 可以显示和编辑来自多种不同类型的数据源的表格数据. 一.两种显示数据的方式:手动,后台代码 主要通过后台代码:先建立三大类 然后绑定 ...