mongodb参考

mongoose官网

mongoose用起来更便捷,更方便些

使用mongodb数据驱动写一个错误日志

更多有关node官方数据驱动mongodb参考文档

这里没有使用asset断言

import mongodb from 'mongodb'

const MongoClient = mongodb.MongoClient
const url = 'mongodb://localhost:27017/edu' export default (errLog, req, res, next) => {
// 1. 将错误日志记录到数据库,方便排查错误
// 2. 发送响应给用户,给一些友好的提示信息
// { 错误名称:错误信息:错误堆栈:错误发生时间 }
// 1. 打开连接
MongoClient.connect(url, (err, db) => {
db
.collection('error_logs')
.insertOne({
name: errLog.name,
message: errLog.message,
stack: errLog.stack,
time: new Date()
}, (err, result) => {
res.json({
err_code: 500,
message: errLog.message
})
})
// 3. 关闭连接
db.close()
})
}

存储结构

  • 一个计算机上可以有一个数据库服务实例
  • 一个数据服务实例上可以有多个数据库
  • 一个数据库中可以有多个集合
    • 集合根据数据的业务类型划分
    • 例如用户数据、商品信息数据、广告信息数据。。。
    • 对数据进行分门别类的存储
    • 集合在 MongoDB 中就类似于数组
  • 一个集合中可以有多个文档
    • 文档在 MongoDB 中就是一个 类似于 JSON 的数据对象
    • 文档对象是动态的,可以随意的生成
    • 为了便于管理,最好一个集合中存储的数据一定要保持文档结构的统一(数据完整性)
{
collection1: [
{ a: { age: 18, name: '', lsit: [], is: true } },
{ 文档2 },
{ 文档3 }
], collection2: [ ], collection3: [ ], collection4: [ ],
}

使用mongoose

Mongoose

安装:

# npm install --save mongoose
yarn add mongoose
const mongoose = require('mongoose')

mongoose.connect('mongodb://localhost/test')

// 1. 创建一个模型架构,设计数据结构和约束
const studentSchema = mongoose.Schema({
name: String,
age: Number
}) // 2. 通过 mongoose.model() 将架构发布为一个模型(可以把模型认为是一个构造函数)
// 第一个参数就是给你的集合起一个名字,这个名字最好使用 帕斯卡命名法
// 例如你的集合名 persons ,则这里就命名为 Person,但是最终 mongoose 会自动帮你把 Person 转为 persons
// 第二个参数就是传递一个模型架构
const Student = mongoose.model('Student', studentSchema) // 3. 通过操作模型去操作你的数据库
// 保存实例数据对象
const s1 = new Student({
name: 'Mike',
age: 23
})
s1.save((err, result) => {
if (err) {
throw err
}
console.log(result)
}) //查询
Student.find((err, docs) => {
if (err) {
throw err
}
console.log(docs)
}) Student.find({ name: 'Mike' },(err, docs) => {
if (err) {
throw err
}
console.log(docs)
})

更多操作参考文档

复习mongoose的基本使用的更多相关文章

  1. iOS总结_UI层自我复习总结

    UI层复习笔记 在main文件中,UIApplicationMain函数一共做了三件事 根据第三个参数创建了一个应用程序对象 默认写nil,即创建的是UIApplication类型的对象,此对象看成是 ...

  2. vuex复习方案

    这次复习vuex,发现官方vuex2.0的文档写得太简略了,有些看不懂了.然后看了看1.0的文档,感觉很不错.那以后需要复习的话,还是先看1.0的文档吧.

  3. mongoose - 让node.js高效操作mongodb

    Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...

  4. 在mongoose中使用$match对id失效的解决方法

    Topic.aggregate( //{$match:{_id:"5576b59e192868d01f75486c"}}, //not work //{$match:{title: ...

  5. 我的操作系统复习——I/O控制和系统调用

    上篇博客介绍了存储器管理的相关知识——我的操作系统复习——存储器管理,本篇讲设备管理中的I/O控制方式和操作系统中的系统调用. 一.I/O控制方式 I/O就是输入输出,I/O设备指的是输入输出设备和存 ...

  6. 复习(1)【Maven】

    终于开始复习旧知识了,有输入必然要有输出.输入和输出之间的内化过程尤为重要,在复习的同时,真正把学到的东西积淀下来,加深理解. Maven项目概念与配置 Maven是一个项目管理和综合工具.Maven ...

  7. Mongo基础使用,以及在Express项目中使用Mongoose

    MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...

  8. mongoose数据库连接和操作

    var mongoose = require('mongoose') mongoose.connect('mongodb://localhost:27017/hometown'); var db = ...

  9. mongoose 和 mongoDB

    第三方学习地址:http://blog.csdn.net/foruok/article/details/47746057 下载mongoDB https://www.mongodb.com/downl ...

随机推荐

  1. Educational Codeforces Round 57

    2018.12.28  22:30 看着CF升高的曲线,摸了摸自己的头发,我以为我变强了,直到这一场Edu搞醒了我.. 从即将进入2018年末开始,开启自闭场集合,以纪念(dian)那些丢掉的头发 留 ...

  2. Go语言学习之goroutine

    协程Coroutine 特点 轻量级的"线程" 非抢占式多任务处理,由协程主动交出控制权 编译器/解释器/虚拟机层面的多任务,非操作系统 多个协程可以在一个或多个线程上执行 go关 ...

  3. requests的post提交form-data; boundary=????

    提交这种用boundary分隔的表单数据时,有两种方法,一种是以传入files参数,另一种是传入data参数,data参数需要自己用boundary来分隔为指定的形式,而files参数则以元组的形式传 ...

  4. Window下,Jenkins忘记密码解决方法

    没有修改过密码的情况下找回初始密码(或者第一次部署的时候) 进入目录 D:\jenkins\secrets ,找到文件 initialAdminPassword 在jenkins页面,输入登录名adm ...

  5. Yandex Big Data Essentials Week1 Unix Command Line Interface File System exploration

    File System Function In computing, a file system or filesystem is used to control how data is stored ...

  6. 手把手带你阅读Mybatis源码(一)构造篇

    前言 今天会给大家分享我们常用的持久层框架——MyBatis的工作原理和源码解析,后续会围绕Mybatis框架做一些比较深入的讲解,之后这部分内容会归置到公众号菜单栏:连载中…-框架分析中,欢迎探讨! ...

  7. [redis读书笔记] 第三部分 多机数据库的实现 复制

    另外一篇写的很好很深入的文章:http://www.tuicool.com/articles/fAnYFb : RDB持久化 http://www.tuicool.com/articles/F3Eri ...

  8. 2,Hadoop部署

    前期准备 (1)JAVA_HOME:因为Hadoop的配置文件中依赖 $JAVA_HOME.修改/etc/profile文件. (2)hostname:修改主机名,方便管理./etc/sysconfi ...

  9. Go 1.14 中 Cleanup 方法简介

    目录 一般的测试 使用 defer 清除依赖 使用 Cleanup 关于t.Parallel 总结 原文:What's New In Go 1.14: Test Cleanup 单元测试通常遵循某些步 ...

  10. MySQL中的执行计划explain

    一.用法及定义: explain为sql的执行计划.在sql前面加上explain关键字即可 如:explain select * from tbl_emp; 名词解释: id:[操作表的顺序] 1. ...