一、mongoose文档地址:

  https://cn.mongoosedoc.top/docs/api.html#update_update

  https://www.cnblogs.com/web-fengmin/p/6435681.html

二、mongoose连接数据库

  1. var mongoose = require('mongoose');
  2. mongoose.connect('mongodb://localhost/studentmange', {
  3. autoIndex: false,
  4. useNewUrlParser: true
  5. })
  6. mongoose.set('useCreateIndex', true);
  7.  
  8. var db = mongoose.connection
  9. db.once('open', function(callback) {
  10. console.log('数据库链接成功');
  11. })
  12.  
  13. module.exports = db

三、定义schema和创建实例对象(可以用new或者create两种方法)

  1. var mongoose = require('mongoose');
  2.  
  3. var courseSchema = new mongoose.Schema({
  4. "cid": Number,
  5. "name": String,
  6. "students": [Number]
  7. })
  8.  
  9. courseSchema.index({"cid": })
  10.  
  11. courseSchema.statics.addStudent = function(courses, sid, callback) {
  12. console.log('插入课程开始', courses, sid)
  13. for(var i=; i< courses.length; i++) {
  14. Course.update({"cid": courses[i]}, {$push: {"student": sid}}, function() {
  15. console.log('课程添加报名成功')
  16. })
  17. }
  18. }
  19.  
  20. var Course = mongoose.model('Course', courseSchema)
  21.  
  22. var course1 = new Course({
  23. "cid": ,
  24. "name": "地理",
  25. "students": []
  26. })
  27. course1.save()
  28.  
  29. Course.create({"cid": ,
  30. "name": "数学",
  31. "students": []
  32. })
  33.  
  34. module.exports = Course

四、结合node.js做CURD 和 DAO层的封装

  1. exports.add = function(req, res, next) {
  2. Student.create(req.query, function() {
  3. console.log('插入学生成功')
  4. res.send('success')
  5. Course.addStudent(req.query.courses, req.query.sid, function() {
  6. console.log('插入课程成功');
  7. })
  8. })
  9. }
  10.  
  11. exports.getAll = function(req, res, next) {
  12. Student.find({}, function(err, result) {
  13. res.send(result)
  14. })
  15. }
  16.  
  17. exports.query = function(req, res, next) {
  18. Student.findOne({"sid": req.query.sid}, function(err, result) {
  19. console.log(result, 'query')
  20. res.send(result)
  21. })
  22. }
  23.  
  24. exports.edit = function(req, res, next) {
  25. console.log('更新 id ', req.query.sid)
  26. Student.update({"sid": req.query.sid},{ $set: req.query}, function(err) {
  27. res.send('修改成功')
  28. })
  29. }
  30.  
  31. exports.remove = function(req, res, next) {
  32. console.log('删除 id '+ req.query.sid)
  33. Student.remove({"sid": req.query.sid}, function(err) {
  34. res.send('删除成功')
  35. })
  36. }

五、常用的操作运算符:

  $set $lt $gt $push $pull

===end 替他具体的细节看文档吧===

mongoose操作笔记的更多相关文章

  1. Centos7系统下修改主机名操作笔记

    习惯了在Centos6系统下修改主机名的操作,但是Centos7下修改主机名的操作却大不相同!操作笔记如下: 在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient) ...

  2. mongodb学习(3)--- NodeJs使用mongoose操作mongodb

    转载: https://cnodejs.org/topic/50c145ed637ffa4155c7eaee 首先对于以下错误说明(有写 db.close): Error: db object alr ...

  3. C语言 字符串操作 笔记

    /* C语言字符串的操作笔记 使用代码和注释结合方式记录 */ # include <stdio.h> # include <string.h> int main(void) ...

  4. node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)

    最近写了一个用node来操作MongoDB完成增.删.改.查.排序.分页功能的示例,并且已经放在了服务器上地址:http://39.105.32.180:3333. Mongoose是在node.js ...

  5. mongoose 操作 mongodb 笔记 (自己的笔记,自己看的)

    mongodb下载/安装 mongoose   npm install --save mongoose mongoose 数据库连接 const mongoose = require('mongoos ...

  6. Mongoose学习笔记

    #名词解释: Schema 一种以文件形式存储的数据库模型骨架,不具备对数据库操作的能力 Model 由Schema生成的模型,具有抽象属性和行为,能够操作数据库 Entity 由Model创建的实体 ...

  7. mongoose学习笔记1--基础知识1

    今天我们将学习Mongoose,什么是Mongoose呢,它于MongoDB又是什么关系呢,它可以用来做什么呢? MongoDB是一个开源的NoSQL数据库,相比MySQL那样的关系型数据库,它更显得 ...

  8. mongoose学习笔记1--基础知识2

    Schema简述 Schema —— 一种以文件形式存储的数据库模型骨架,无法直接通往数据库端,也就是说它不具备对数据库的操作能力,仅仅只是数据库模型在程序片段中的一种表现,可以说是数据属性模型(传统 ...

  9. Oracle 日常应用和操作笔记

    简单整理oracle日常应用笔记. 1.采用excel表格中的数据直接粘贴数据库记录中,默认会在后面加一个空格“”,操作完成后一定要记得对空格匹配然后修改一下. 2.查询数据库里的所有表结构, 采用s ...

随机推荐

  1. LightGBM GPU python版本安装

    失败的安装尝试 1.官方Guide https://lightgbm.readthedocs.io/en/latest/GPU-Windows.html 生成在windows下可执行的exe程序,但是 ...

  2. svn 巧用,如果遇到问题解决不了,而上一个版本可以正常使用,则可以查记录

    svn 巧用,如果遇到问题解决不了 1.svn上一个版本可以正常使用的情况下 2.查看历史 3. 丢失的代码复制回来即可

  3. python全栈开发第6天

    作业一:1) 开启Linux系统前添加一块大小为15G的SCSI硬盘 2) 开启系统,右击桌面,打开终端 3) 为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区 ...

  4. ubuntu 18.04 64bit下如何安装安卓虚拟机anbox?

    一. 安装snapd sudo apt-get install snapd 二. 安装adb sudo apt-get install adb 三. 安装必要的内核模块 wget https://la ...

  5. Orcal设置默认插入数据的日期和时间

    CREATE TABLE TEST_DATE_TIME( id integer, operdate )default "TO_CHAR"(SYSDATE,'yyyy-MM-dd') ...

  6. [django]update_or_create使用场景

    update_or_create 作用是为了添加数据时防止重复. 先去查询, 如果没有在创建, 如果有则更新. update_or_create用法与密码存储实例 create方法 如果id是None ...

  7. H5 页面适配几种展现形式

    1.contain 模式:以内容中心为基点按照视觉稿的宽高比缩放以适配窗口显示全页面内容,窗口与内容的宽度比或高度比之间较小者缩放填满窗口,当窗口宽高比和视觉稿不同时,另一方向的两侧出现留空部分. 2 ...

  8. maven 打包异常

    异常信息: [ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.1.6.RELEASE ...

  9. SpringBoot解决ajax跨域问题(转载)

    一.第一种方式: 1.编写一个支持跨域请求的 Configuration import org.springframework.context.annotation.Configuration; im ...

  10. java源码-CountDownLatch源码分析

    这次分析CountDownLatch,相信大部分人都用过把! CountDownLatch内部还是Sync对象,还是基础AQS(可见其重要性),首先看一下CountDownLatch初始化,Count ...