一、mongoose文档地址:

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

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

二、mongoose连接数据库

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/studentmange', {
autoIndex: false,
useNewUrlParser: true
})
mongoose.set('useCreateIndex', true); var db = mongoose.connection
db.once('open', function(callback) {
console.log('数据库链接成功');
}) module.exports = db

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

var mongoose = require('mongoose');

var courseSchema = new mongoose.Schema({
"cid": Number,
"name": String,
"students": [Number]
}) courseSchema.index({"cid": }) courseSchema.statics.addStudent = function(courses, sid, callback) {
console.log('插入课程开始', courses, sid)
for(var i=; i< courses.length; i++) {
Course.update({"cid": courses[i]}, {$push: {"student": sid}}, function() {
console.log('课程添加报名成功')
})
}
} var Course = mongoose.model('Course', courseSchema) var course1 = new Course({
"cid": ,
"name": "地理",
"students": []
})
course1.save() Course.create({"cid": ,
"name": "数学",
"students": []
}) module.exports = Course

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

exports.add = function(req, res, next) {
Student.create(req.query, function() {
console.log('插入学生成功')
res.send('success')
Course.addStudent(req.query.courses, req.query.sid, function() {
console.log('插入课程成功');
})
})
} exports.getAll = function(req, res, next) {
Student.find({}, function(err, result) {
res.send(result)
})
} exports.query = function(req, res, next) {
Student.findOne({"sid": req.query.sid}, function(err, result) {
console.log(result, 'query')
res.send(result)
})
} exports.edit = function(req, res, next) {
console.log('更新 id ', req.query.sid)
Student.update({"sid": req.query.sid},{ $set: req.query}, function(err) {
res.send('修改成功')
})
} exports.remove = function(req, res, next) {
console.log('删除 id '+ req.query.sid)
Student.remove({"sid": req.query.sid}, function(err) {
res.send('删除成功')
})
}

五、常用的操作运算符:

  $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. TCP被动打开 之 第三次握手-接收ACK

    假定客户端主动打开,发送syn包到服务器,服务器创建连接请求控制块加入到队列,进入TCP_NEW_SYN_RECV 状态,发送syn+ack给客户端,并启动定时器,等待客户端回复最后一个握手ack: ...

  2. jupyter notebook + MobaXterm Linux端远程部署

    $jupyter notebook --generate-config $python In []: from notebook.auth import passwd In []: passwd() ...

  3. maven 安装后变成 mvn 不是内部命令解决方法

    1.maven的安装教程 下载地址为:http://maven.apache.org/download.cgi 进入此页面之后 点击下载,然后解压,我把目录名改为maven,目录结构如下图所示 下面我 ...

  4. 3-mybatis-xml配置

    配置文件主要在官网文档是已有详细说明. 1  properties 在上一节中已经有说明. 2 settings MyBatis中的调整设置. <settings> <!--全局地开 ...

  5. 2-mybatis-启动

    启动相关的类主要位于session包下. 参照mybatis官方文档,从xml中构建SqlSessionFactory后,可以获取SqlSession,然后使用SqlSession查询数据库得到结果. ...

  6. JDBC的URL

    JDBC的URL=协议名+子协议名+数据源名. 协议名总是“jdbc”. 子协议名由JDBC驱动程序的编写者决定. 数据源名也可能包含用户与口令等信息:这些信息也可单独提供. 几种常见的数据库连接 o ...

  7. JNI的开发步骤

    使用C函数实现Java本地方法: 1. 在java代码里面声明一个native的方法 public native String helloFromC(); 2. 在工程目录下面创建一个jni的文件夹 ...

  8. MEF等Ioc框架引起内存泄露-PartCreationPolicy

    对象的创建可以使用new,也可以使用IOC架如:castle.MEF等,IOC创建的对象的生命周期,可能IOC负责管理,使用框架的开发者如果不弄清楚可能会造成内存泄露问题. 这些内存泄露问题并不是IO ...

  9. 【转】C++ 资源大全中文版

    转自:http://www.cnblogs.com/liuliu-NoGirl/p/5802765.html  感谢作者发布这么东西 我想很多程序员应该记得 GitHub 上有一个 Awesome – ...

  10. Ajax操作的四个步骤

    Ajax操作的四个步骤: 创建Ajax对象 连接服务器 发送请求 接收返回信息 <!DOCTYPE html> <html> <head lang="en&qu ...