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与一些关系型数据库相比,它更显得轻巧.灵活,非常适合在数据规模很大.事务性不强的场合下使用.同时它也是一个对象数据库,没有表.行等概念,也没有固定的模式和结构,所有的 ...
随机推荐
- [Android]推断网络连接是否可用
/** * 推断移动网络是否开启 * * @param context * @return */ public static boolean isNetEnabled(Context context) ...
- 微信企业号开发:UserAgent
userAgent 属性是一个仅仅读的字符串,声明了浏览器用于 HTTP 请求的用户代理头 的值.微信企业号的打开网页的userAgent又包括那些信息呢? 使用userAgent能够推断用户訪问的浏 ...
- 单片机project师必备的知识
C语言编程 程序编译过程 哪部分干什么 数据结构 链表 二叉树 算法 数组 堆栈 队列算法 遍历 常量在内存中的表现形式 语法和内存的相应关系 数电 UML 类图 时序图 状态图 用例图 ...
- VMware workstation虚拟机不能联网解决方法
以备后用. 第一步:先设置VMware的编辑——虚拟网络编辑器,启用VMnet8,NAT模式,如下图所示. 其实就是VMware默认的设置,无须更改,如果不小心改了,点击还原默认设置. 第二步:虚拟机 ...
- bzoj5178: [Jsoi2011]棒棒糖
就是裸的主席树嘛... 表扬一下自己1A #include<cstdio> #include<iostream> #include<cstring> #includ ...
- 什么是URL?网址的组成
欢迎加入前端交流群交流知识&&获取视频资料:749539640 和 Hypertext 以及 HTTP 一样,URL是Web中的一个核心概念.它是浏览器用来检索web上公布的任何资源的 ...
- [xPlugin] smartupload jsp图片上传
URL:http://www.cnblogs.com/ISeeYouBlogs/p/jsp.html 1.要实现图片上传,首先需要一个组件,这里我用的是smartupload.jar可以到这里下载ht ...
- Ubuntu搭建docker环境
一丶自己搭建Ubuntu的虚拟机(网上很多教程) PS:下带图形化界面的Ubuntu镜像,这里只说一下要装那些工具和做那些配置 安装vim sudo apt-get install ...
- 每条sql语句实际上都是一个事物(事物多种类型解读)
事务(数据库引擎) 事务是作为单个逻辑工作单元执行的一系列操作.一个逻辑工作单元必须有四个属性,称为原子性.一致性.隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务.原子性事务必须是原子工 ...
- Aspose.Words进行Word替换(插入图片和水印)
由于最近一直在忙着做着Word打印模板的一些工作,就整理一些Asponse.Words对Word文档进行操作的资料. using System; using System.Collections.Ge ...