1.安装

打开命令行

npm i mongoose

2.连接数据库

// 引入安装的包
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mongoo');
//mongoo这里是代表数据库的名称
var db = mongoose.connection;
db.on('error', console.error.bind(console, '连接失败'));
db.once('open', function() {
console.log('连接成功')
});
// new一个schema:把一个本身非结构化的数据变成结构化
var kittySchema = new mongoose.Schema({
name: String,
age:Number,
gender:String
});
// 根据schema得到一个model,这个model是一个class
var Kitten = mongoose.model('Kitten', kittySchema);

3.增加数据

var felyne = new Kitten({ name: '王富贵',age:18,gender:'男' });
felyne.save(function (err, res) {
//回调第一个参数代表出错
if (err) return console.error(err);
//第二个带个成功的回调参数
console.log(res)
});

添加数据的方式有两种一种是userTest.save()需要实例化模型,另一种是user.create(data,callback(err,res))这种方式不用实例化模型。

4.删除数据

Kitten.remove({name:"王富贵"},function(arr,res){
console.log(res)
})
//执行完成出现这样的代码
//{ n: 1, ok: 1, deletedCount: 1 }
// n:条件匹配到的数据条数
// ok: 1代表语句执行成功
// deletedCount: 被删除的数量

此方法将删除命令直接发送到MongoDB,不涉及Mongoose文档。由于不涉及Mongoose文档,因此不会执行任何中间件(挂钩)

Kitten.deleteOne({name:"王富贵"},function(arr,res){
console.log(res)
})
//此方法和remove类似,最多删除一个文档
此方法和remove类似,最多删除一个文档
Kitten.deleteMany({name:"王富贵"},function(arr,res){
console.log(res)
})
//此方法和remove类似,从集合中删除所有匹配的文档

此方法和remove类似,从集合中删除所有匹配的文档

5.更新数据(改数据)

Kitten.update({name:"王富贵"},{$set:{age:26}},function(arr,res){
console.log(res)
})
//update 只匹配查找到的第一条数据并进行更换
update 只匹配查找到的第一条数据并进行更换
Kitten.updateMany({name:"王多余"},{$set:{age:26}},function(arr,res){
console.log(res)
})
//updateMany 匹配查找到的所有document并更改
updateMany 匹配查找到的所有document并更改
Kitten.updateOne({name:"王多余"},{$set:{age:36}},function(arr,res){
console.log(res)
})
//updateOne 更新匹配的第一个文档
findByIdAndUpdate 根据id查找然后修改
Kitten.findByIdAndUpdate(id,{name:"王多余"},{new:true},function(arr,res){
console.log(res)
})
//findByIdAndUpdate 根据id查找然后修改
//第一个参数必须为id
//第二个参数是需要修改的内容
//第三个参数代表返回的数据是否为更新后 true为是。默认为flast。可不写
//回调 异步代码

6.查找数据

Kitten.find({},function(err,res){
console.log(res)
})
//查找数据库中所有数据
Kitten.find({name:'王富贵'},function(err,res){
console.log(res)
})
//查找所有名字为王富贵的数据
Kitten.findOne({name:'王富贵'},function(err,res){
console.log(res)
})
//查找第一个名字为王富贵的数据
Kitten.findById({_id:'5e5b43db4464113f1843e380'},function(err,res){
console.log(res)
})
//根据id查找对应的数据

查询有三种方式find查全部符合要求,findOne查到的第一个,findById通过集合中每条数据特定的_id来查询

查询方式还可以特定条件来查找

//"$lt"(小于)
//"$lte"(小于等于)
//"$gt"(大于)
//"$gte"(大于等于)
//"$ne"(不等于)
Kitten.find({age: {$ne: 18}},function (err,res) {
console.log(res)
//查找age不等于18的数据
})

范围查找

// "$in"
// "$nin"
Kitten.find({age: {$nin: [20,24]}},function (err,res) {
console.log(res)
//查找age不为20-24之间的数据
})
// "$in"查找20-24之间的数据
// "$nin"查找不为20-24之间的数据

or

Kitten.find({$or: [{name:'老王'},{name:'王富贵'}]},function (err,res) {
console.log(res)
//查找符合name为老王或者为王富贵的数据
})

增加数据中的save()要实例化model,其他皆可不用实例化model

mongoose基本增删改查的更多相关文章

  1. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  2. 【转】mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    mongoDB 学习笔记纯干货(mongoose.增删改查.聚合.索引.连接.备份与恢复.监控等等) http://www.cnblogs.com/bxm0927/p/7159556.html

  3. mongoDB (mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    MongoDB - 简介 官网:https://www.mongodb.com/ MongoDB 是一个基于分布式文件存储的数据库,由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储 ...

  4. 手把手教你基于koa2,mongoose实现增删改查

    初始化项目 npm init -y 先安装一波乱七八糟的依赖插件(需要具备一定的koa2知识,至于mongoDB自行百度安装教程),模板引擎我使用的是art-template(据说是性能最好的,而且是 ...

  5. 基于mongoose 的增删改查操作

    无论是基于robomongo 的可视化工具,亦或是基于 mongoose 的函数工具,只要是对 mongodb 的操作,第一步都是开启数据库. 开启mongodb 数据库 进入mongod所在目录 执 ...

  6. 使用Mongoose类库实现简单的增删改查

    使用Mongoose类库实现简单的增删改查 Mongoose是在nodejs环境中对MongoDB数据库操作的封装,一种对象模型工具,可以将数据库中的数据转换为javascript对象供我们使用. M ...

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

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

  8. Node.js、express、mongodb 入门(基于easyui datagrid增删改查)

    前言 从在本机(win8.1)环境安装相关环境到做完这个demo大概不到两周时间,刚开始只是在本机安装环境并没有敲个Demo,从周末开始断断续续的想写一个,按照惯性思维就写一个增删改查吧,一方面是体验 ...

  9. 详解node + mongoDb(mongoDb安装、运行,在node中连接、增删改查)

    一.序言 好久没写博客了,这次主要聊聊 node 和 mongoDb . 先说明一下技术栈  node + express + mongoose + mongoDb.这篇博客,主要讲述 mongoDb ...

随机推荐

  1. [LC] 19. Remove Nth Node From End of List

    Given a linked list, remove the n-th node from the end of list and return its head. Example: Given l ...

  2. python库之——sklearn

    机器学习库sklearn 官方documentation(资料)中分为不同的部分: 其中我们主要讲User Guide(机器学习算法理论介绍).API(程序实现方法): 一.User Guide ht ...

  3. python语法基础-基础-赋值与深浅拷贝

    ##################################### 预备知识一——python的变量及其存储 在详细的了解python中赋值.copy和deepcopy之前,我们还是要花一点时 ...

  4. 用Spring Tool Suite简化你的开发

    如果你是一个喜欢用spring的人,你可能会在欣赏spring的强大功能外,对其各样的配置比较郁闷,尤其是相差较大的版本在配置文件方面会存在差异,当然你可以去花不少的时间去网上查找相关的资料,当你准备 ...

  5. JDK源码看Java域名解析

    前言 在互联网中通信需要借助 IP 地址来定位到主机,而 IP 地址由很多数字组成,对于人类来说记住某些组合数字很困难,于是,为了方便大家记住某地址而引入主机名和域名. 早期的网络中的机器数量很少,能 ...

  6. 无标定量|有标定量|谱图计数|XIC|AMT数据库|RT对对齐|母离子|子离子|SILVER|SRM|iBAQ|APEX|差异蛋白筛选|MaxQuant|PANDA|C-HPP

    生物医学大数据-蛋白质定量 现今肽段定量效率存在巨大差异.比如相同质量蛋白质,但是肽段和蛋白信号不均一,在物理条件一致时,仅有70%的重复率,并且当重复次数变多时,overlapping在变少. 无标 ...

  7. 吴裕雄--天生自然python学习笔记:Python3 正则表达式

    Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参 ...

  8. <USACO06NOV>玉米田Corn Fields

    状压emm 二进制真有趣 来自dp垃圾的欣喜 Description 农民 John 购买了一处肥沃的矩形牧场,分成M*N(1 <= M <= 12; 1 <= N <= 12 ...

  9. python基础修改haproxy配置文件

    1.通过eval(),可以将字符串转为字典类型. 2.Encode过程,是把python对象转换成json对象的一个过程,常用的两个函数是dumps和dump函数.两个函数的唯一区别就是dump把py ...

  10. WWW 2015:一个神奇的会议

    2015:一个神奇的会议" title="WWW 2015:一个神奇的会议"> 作者:微软亚洲研究院研究员 袁进辉 WWW 2015(24th Internatio ...