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. CCF_201409-1_相邻数对

    水. #include<iostream> #include<cstdio> #include<algorithm> using namespace std; in ...

  2. HDU_5602_概率dp

    http://acm.hdu.edu.cn/showproblem.php?pid=5602 dp[1][i][j]表示轮到第二个人操作时,第一人总和i,第二人总和j,第一人胜的最小概率(因为每个人都 ...

  3. 使用MS Devops 来部署CRM Solution

    在D365 CE开发当中,有一个非常痛苦的问题就是开发,测试环境中的export import solution 部署问题. Devops中能很好的解决这个问题. 工作原理: 在Azure Devop ...

  4. 《 Java 编程思想》CH08 多态

    在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征. 多态通过分离做什么和怎么做,从另一个角度将接口和实现分离开来. "封装"通过合并特征和行为来创建新的数据类 ...

  5. 【OpenGL】GL_DEPTH_TEST深度测试问题

    记录一个深度测试的问题 在实现一个简单的OpenGL程序时,遇到了一个问题,深度测试总是有问题,无法正常显示,如下 正常情况为 通过调试发现屏幕空间中的所有深度值均为1. OpenGL代码如下: vo ...

  6. java架构之路-(微服务专题)ribbon的基本使用和内部算法的自我实现

    上次回归: 上次我们主要说了,我们的注册中心nacos的使用,如我们的命名空间.分组.集群.版本等是如何使用的,如果是这样呢?我们现在有三个用户服务和三个订单服务,我们应该如何分发这些请求呢?都请求到 ...

  7. Html / XHtml 解析 - Parsing Html and XHtml

    Html / XHtml 解析 - Parsing Html and XHtml HTMLParser 模块 通过 HTMLParser 模块来解析 html 文件通常的做法是, 建立一个 HTMLP ...

  8. vue学习(一)项目搭建

    首先需要配置node和npm,如果没有安装的话,百度一下安装教程. 如果感觉npm下载速度慢,可以使用淘宝镜像cnpm,链接地址: http://npm.taobao.org/ 安装cnpm npm ...

  9. LwIP的SNMP学习笔记

    关于这方面的资料网上非常少,做一下笔记. 在LwIP中,在\lwip-1.4.1\src\core\snmp目录下有SNMP相关的c文件,在lwip-1.4.1\src\include\lwip目录下 ...

  10. linux系统的启动流程梳理

    1. 不同版本的linux系统的启动流程 1.1 centos6.x系统的启动流程 其详细启动步骤如下: 1)开机,BIOS自检,检查各个硬件是否正常 2)读取硬盘MBR信息,引导系统启动 3)加载g ...