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与一些关系型数据库相比,它更显得轻巧.灵活,非常适合在数据规模很大.事务性不强的场合下使用.同时它也是一个对象数据库,没有表.行等概念,也没有固定的模式和结构,所有的 ...
随机推荐
- 心急的C小加 贪心算法
心急的C小加 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的 ...
- 南洋理工大学 ACM 在线评测系统 矩形嵌套
矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...
- matplotlib的cmap
今天又看到了这样的代码: plt.imshow(X_train[0], cmap=plt.get_cmap('PuBuGn_r')) #plt.imshow(X_train[0], cmap=plt. ...
- 【JEECG技术博文】Local storage & easyui extensions
1. Local storage背景 cookie弊端:同域内http请求都会带cookie,添加带宽和流量:有个数和限制大小(约4K). 在HTML5中,本地存储是一个window的属性.包含loc ...
- JAVA进阶-泛型
>泛型:泛型指代了參数的类型化类型,一般被用在接口.类.方法中 >作用:用来确定參数的范围,在书写代码的时候提前检查代码的错误性 >泛型的声明,下面给出类声明,依此类推: class ...
- ASP.NET MVC2 Web项目中公用类库的问题
ASP.NET WEB窗体 网站中,加入公用类文件的话,系统会很自动并殷勤的问你,说要不要把它存放在文件夹 App_Code 里.一旦加入,全站都可以很方便地加以使用,一点问题没有. 这种习以为常的方 ...
- bzoj4887: [Tjoi2017]可乐
一眼暴力宽搜(最近比赛想暴力想疯了... 很明显的矩乘,然后自爆可以看作走向向一个无出边的点 然后没啥难的了吧. #include<cstdio> #include<iostream ...
- 国内物联网平台初探(五) ——机智云IoT物联网云服务平台及智能硬件自助开发平台
平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运营管理等覆盖智能硬件接入到运营管理全生命周期服务的能力. 机智云平台为开发者提供了 ...
- net快速写入/读取大量数据Postgresql
Postgresql快速写入/读取大量数据 http://www.cnblogs.com/podolski/p/7152144.html 环境及测试 使用.net驱动npgsql连接post数据库.配 ...
- Spring配置之OpenSessionInViewFilter
转自:https://www.cnblogs.com/blogonfly/articles/3991782.html 参考: OpenSessionInViewFilter作用及配置:http://w ...