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. spring-security配置和原理简介

    SpringSecurity3的核心类有三种 1.URL过滤器或方法拦截器:用来拦截URL或者方法资源对其进行验证,其抽象基类为AbstractSecurityInterceptor 2.资源权限获取 ...

  2. vue中用div的contenteditable属性实现v-for遍历,双向数据绑定的动态表格编辑

    1.HTML部分 <tr v-for="(item,index) in customerVisitList2" :key="index"> < ...

  3. MyBaties --day1

    今天就来聊聊这个东西 今天的主角相信大家也看到了 MyBaties  是个什么东东 它有什么作用?怎么用?好不好用今天来说说 .说到MyBaties 就不得不谈到JDBC大家可能都知道 JDBC用来操 ...

  4. Visual Studio 2017使用

    常用快捷方式 Ctrl + KK插入书签 取消书签Ctrl + KP 上一个书签Ctrl + KN 下一个数千Ctrl + F3 先一个关键词Shift + F3 上一个关键词 Ctrl + KC 添 ...

  5. MySQL数据库的基本认识与操作

    Mysql是一个数据库,但是我们安装的mysql数据库服务,服务就会有状态,启动,停止,重启.我们使用mysql必须保证mysql启动. 使用mysql数据库需要连接数据库 Mysql -u -p - ...

  6. 【2017-11-26】Linq表连接查询

    class Program { static void Main(string[] args) { //Linq创建的数据库上下文对象db DataClasses2DataContext db = n ...

  7. python学习笔记:建立一个自己的搜索引擎

    写学习笔记是我学习python以来养成的一个习惯,每学习一个知识点,便整理成文字记录下来.搜索引擎大家经常都有在使用,国内外也很很多搜索引擎平台. Google搜索引擎建立至今已经快20年了,之后全球 ...

  8. inotify+rsync文件实时同步

    原文转自http://dl528888.blog.51cto.com/2382721/771533/ 之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行 ...

  9. FreeRTOS任务基础概念

    RTOS系统的核心就是任务管理: 任务的特性 在RTOS中每个任务都有自己的运行环境,不依赖于系统中其他的任务或者调度器,任何一个时间点只能有一个任务运行,具体运行哪个任务是由任务调度器来决定的,而任 ...

  10. Java基础 String 裸暴力算法- 五个小练习

      之间的博客,承上启下:    Java基础 String/StringBuff 常用操作方法复习/内存分析 Java数组直接选择排序.sort()排序 Java基础 String 算法 - 五个练 ...