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与一些关系型数据库相比,它更显得轻巧.灵活,非常适合在数据规模很大.事务性不强的场合下使用.同时它也是一个对象数据库,没有表.行等概念,也没有固定的模式和结构,所有的 ...
随机推荐
- nyoj 711 枚举+并查集
#include<stdio.h>//从大到小不断枚举边直到找到s-t的路径,判断从s可以到t可以用并查集来判断 #include<stdlib.h>//枚举最大的一条边肯定 ...
- HDU 4505
哈哈哈哈哈哈哈哈哈,省赛,一等奖,一定的一定的一定的一定的... #include <iostream> #include <cstdio> #include <cstr ...
- HDU 1515
简单题,直接用STACK模拟整个过程. 模拟出栈时,应注意保护现场,等到递归完成后返回. #include <iostream> #include <string.h> #in ...
- Android:ExpandableListView使用
前言 眼下回到了工作岗位,第一件事情就是ExpandListView的优化.这里简单的用一个Demo介绍一下ExpandableListView的使用. 简介一下Demo实现的功能,主要是继承Base ...
- 【待解决】maven创建web报Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins
Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:maven-war-plugin:maven- ...
- IOS UITextView光标位置在中间的问题
在viewDidLoad中 if ([selfrespondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) { se ...
- UVA 1201 - Taxi Cab Scheme(二分图匹配+最小路径覆盖)
UVA 1201 - Taxi Cab Scheme 题目链接 题意:给定一些乘客.每一个乘客须要一个出租车,有一个起始时刻,起点,终点,行走路程为曼哈顿距离,每辆出租车必须在乘客一分钟之前到达.问最 ...
- fragment.setMenuVisibility setUserVisibleHint
[Android]Fragment真正意义上的onResume和onPause 前言 Fragment虽然有onResume和onPause的,但是这两个方法是Activity的方法,调用时机也是与A ...
- python笔记:文件操作
1.逐行打印整个文件 # -*- coding: utf-8 -*- f = open("test",'r',encoding="utf-8") count = ...
- HTTP请求与请求头
HTTP 的请求报文分为三个部分 请求行.请求头和请求体,格式如图:一个典型的请求消息头域,如下所示: POST/GET http://download.microtool.de:80/somedat ...