mongodb和mongoose模块

数据库

数据库有关系型数据库(MySQL)和非关系型数据库(mongodb),两者的语法和数据存储形式不一样。

  • mySQL 关系型数据库

类似于表格的形式,每一条数据都是以id为标识

table

thead name sex age id

tbody May female 18 1

Simple male 25 2

  • mongodb 非关系型数据库

集合,相当于表的概念,Bson,一条数据代表一个文档(数据的基本单位)

{

id :

name : May

age : 18

}

mongodb

大数据库-->子数据库-->集合(Bson)-->文档(数据的基本单位)-->字段(键值对)

在黑窗口下执行的一些命令行:

mongod --dbpath F:\database 启动服务端,指定数据存储路径

mongo 启动客户端

show dbs 显示有多少个子数据库

use simple 创建/跳转到simple子数据库进行操作

db.dropDatabase() 删除当前子数据库

db.createCollection(“集合名”, 限制内存大小) 在子数据库下创建一个集合

show collections 在当前子数据库内查看所以的集合

db.集合名.drop() 删除当前集合

db.集合名.insert({name:”simple”,sex:”male”}) 往集合中插入数据

db.集合名.find() 查看集合中的所有数据

db.集合名.find().pretty() 显示格式化后的数据

db.集合名.update({“name”:”May”},{$set:{sex:”male”}},{multi:false}) 修改集合中,name属性为wula的数据,将其sex属性改为boy。(multi属性默认可不写为false,此时只会修改先匹配到的第一条数据;改为true会将所有匹配的数据都进行修改)

mongoose模块

// mongoose 导入包
const mongoose = require("mongoose");
//连接本地子数据库simple(没有的话会创建一个),返回一个实例,默认端口27017
const db = mongoose.createConnection("mongodb://localhost:27017/simple", {useNewUrlParser : true});
//用原生的es6的promise替换掉mongoose自定义的promise
mongoose.Promise = global.Promise;
//监听是否链接成功
db.on("error", () => {
console.log("数据库链接失败");
});
db.on("open", () => {
console.log("数据库链接成功");
});
// 规范数据的字段,得到Schema类
const Schema = mongoose.Schema;
//得到Schema实例,用来规范数据类型或者字段
const userSchema = new Schema({
name : String,
age : Number, //类型的构造函数
sex : String
},{
versionKey : false //取消往每个数据中插入版本信息
});
//创建一个集合,名为user,返回一个构造函数
const User = db.model("user", userSchema, "user"); //如果不写第三个参数则集合名字会在后面加s为users,加了第三个参数就会直接指定它的名称
//要插入集合的文档/数据
const obj1 = {
name : "simple",
age : 25,
sex : "男"
};
//插入数据
const d1 = new User(obj1);
d1.save((err, data) => {
console.log(data);
}); //返回一个promise对象
/* d1.save().then(res => {
console.log(res);
}).catch((err) => {
console.log(err);
});
*/
//删除数据
/* User.deleteOne({name:"simple"}, (err, data) => {
if(err) console.log(err);
console.log("删除成功", data);
}); */
/* User.deleteMany({ name: "May" }, function (err) {
if (err) console.log(err);
}); */

前端知识点回顾——mongodb和mongoose模块的更多相关文章

  1. 前端知识点回顾——HTML,CSS篇

    前端知识点回顾篇--是我当初刚转行为了面试而将自己学过的前端知识整理成的一份笔记,个人目的性很强,仅供参考. doctype 有什么用 doctype是一种标准通用标记语言的文档类型声明,目的是告诉标 ...

  2. 前端知识点回顾——Reactjs

    React.js 编写react需要安装的三个开发环境下的模块 babel 解析JSX react 实现ui用户界面 react-dom 处理dom JSX:在JavaScript里面写html代码( ...

  3. 前端知识点回顾——koa和模板引擎

    koa 基于Node.js的web框架,koa1只兼容ES5,koa2兼容ES6及以后. const Koa = requier("koa"); const koa = new K ...

  4. 前端知识点回顾——Nodejs

    Node.js 事件循环机制 setImmediate()是将事件插入到事件队列尾部,主线程和事件队列的函数执行完成之后立即执行setImmediate指定的回调函数,和setTimeout(fn,0 ...

  5. 前端知识点回顾之重点篇——ES6的async函数和module

    async函数 ES2017 标准引入了 async 函数,使得异步操作变得更加方便. async 函数是 Generator 函数的语法糖 什么是语法糖? 意指那些没有给计算机语言添加新功能,而只是 ...

  6. 前端知识点回顾之重点篇——ES6的Promise对象

    Promise Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大. 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异 ...

  7. 前端知识点回顾之重点篇——CSS中flex布局

    flex布局 来源: http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool 采用 Flex 布局的元素 ...

  8. 前端知识点回顾之重点篇——jQuery实现的原理

    jQuery jQuery的实现原理 参考:https://blog.csdn.net/zhouziyu2011/article/details/70256659 外层沙箱和命名空间$ 为了避免声明了 ...

  9. 前端知识点回顾——Javascript篇(六)

    fetch 在原生ajax+es6promise的基础上封装的一个语法糖,返回promise对象. fetch(url, initObj) .then(res=>res.json()) .the ...

随机推荐

  1. 3.Java集合-HashSet实现原理及源码分析

    一.HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持,它不保证set的迭代顺序很久不变.此类允许使用null元素 二.HashSet的实现: 对于Ha ...

  2. c# Format() 方法

  3. Linux网络管路——网络相关命令ping、traceroute

    ping [root@51cto /]# ping www.baidu.com PING www.a.shifen.com (() bytes of data. bytes from ttl= tim ...

  4. 07_Azkaban工作流调度器简介及其安装

    Azkaban介绍 Azkaban是一个Linkedin开源的一个批量工作流任务调度器.用于在一个工作流内以一个特定的顺序运行一组工作和流程. Azkaban定义了一种KV文件格式来建立任务之间的依赖 ...

  5. idou老师教你学Istio 14:如何用K8S对Istio Service进行流量健康检查

    Istio利用k8s的探针对service进行流量健康检查,有两种探针可供选择,分别是liveness和readiness: liveness探针用来侦测什么时候需要重启容器.比如说当liveness ...

  6. 【转】解决高版本springboot对Velocity不支持

    https://blog.csdn.net/sinat_31270499/article/details/82283880 最近在做关于Spring Boot开发的项目,因为项目中要用到Velocit ...

  7. 2018-2019 XIX Open Cup, Grand Prix of Korea B - Dev, Please Add This!

    B - Dev, Please Add This! 思路: 对于每一个经过 '*' 的横线和竖线看成一个整体,设他们分别为分量x和分量y 用2-sat考虑这个问题, 如果要经过 '*' ,那么x和y至 ...

  8. watch 监控的新旧值一致问题处理

    watch 监控的新旧值一致问题处理 http://www.imooc.com/article/details/id/286654

  9. 基于 es6 的 javascript 实用方法

    一.求数字数组的平均数 - 使用 数组的 reduce() 方法将每个值添加到累加器,初始值为0,总和除以数组长度. const average = arr => arr.reduce((acc ...

  10. jaxb生成cdata块

    1.需要添加一个适配器: import javax.xml.bind.annotation.adapters.XmlAdapter; public class AdapterCDATA extends ...