博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongoose(猫鼬)
阅读量:6313 次
发布时间:2019-06-22

本文共 2462 字,大约阅读时间需要 8 分钟。

mongoose@5.2.13 快速入门

const mongoose = require('mongoose');/* 连接数据库 */mongoose.connect('mongodb://localhost/mytest', {useNewUrlParser: true}); // 如果没有mytest这个数据库,则会自行创建let db = mongoose.connection;// 如果连接发生错误db.on('error', ()=>{console.error('连接错误')});// 如果连接成功db.once('open', ()=>{console.log('已经连接')});/* 注册一个集合kittens */let kittySchema = new mongoose.Schema({    name: String,    age: Number});// 添加方法,被编译到Model原型并在每个文档实例上公开kittySchema.methods.talk = function(){    let greeting = this.name || '我还没有名字';    console.log(`我叫${greeting}`);};let Kitten = mongoose.model('kittens', kittySchema);/* 创建kittens集合的文档(实例,即一条数据)*/let silence = new Kitten({    name: 'silence',    age: 1});// console.log(silence); 会自动加一个 _id 的属性let fluffy = new Kitten({    name: 'fluffy',    age: .5});// 存到MongoDB上silence.save();fluffy.save((err, result)=>{    if(err)return;    fluffy.talk();});

查询

第一个参数是查询条件,第二个参数指定结果输出的项目(可省略,就是全部输出)。

Kitten.find({name: /^flu/}, {name: 1, _id: 0},(err, result)=>{    if(err)return;    console.log(result);})

基础查询

Kitten.findOne()

利用id的唯一性查询

Kitten.findById(_id,callback)

利用正则表达式模糊查询

let findCondition = {    name: {        $regex: /si/i    }}

其他条件

{    age: {        $gte: 18 // age >= 18    }}
  • $or或关系
  • $nor或关系取反
  • $gt大于
  • $gte大于等于
  • $lt小于
  • $lte小于等于
  • $ne不等于
  • $in在多个值范围内
  • $nin不在多个值范围内
  • $all匹配数组中多个值
  • $regex正则,用于模糊查询
  • $size匹配数组大小
  • $maxDistance范围查询,距离(基于LBS)
  • $mod取模运算
  • $near邻域查询,查询附近的位置(基于LBS)
  • $exists字段是否存在
  • $elemMatch匹配内数组内的元素
  • $within范围查询( 基于LBS)
  • $box范围查询,矩形范围(基于LBS)
  • $center范围醒询,圆形范围(基于LBS)
  • $centerSphere范围查询,球形范围(基于LBS) 
  • $slice查询字段集合中的元素(比如从第几个之后,第N到第M个元素)

查询数量

Kitten.count({/* 查询条件 */},(err,num)=>{})

分页查询(important)

let findCondition = {}; // 查询条件let pageSize = 10; // 每页多少条let currPage = 5; // 当前是多少页let skipNum = (currPage-1)*pageSize; // 跳过条数。比如现在是第5页,就跳过前4页乘以每页10条。let sort = {    age: -1 // 按age降序排序}Kitten.find(findCondition,{_id:0,age:1,name:1})      .skip(skipNum)      .limit(pageSize)      .sort(sort)      .exec((err,result)=>{});

更新

Kitten.update({/*查询条件*/}, {/*更改项目*/}, {}, (err,res)=>{}); // 第三个参数设为`{multi: false}`只更新一个文档。

更改文档某一条(些)数据再调用save方法也可更新。

删除

Kitten.remove({/* 查询条件 */}, callback)

其他常用的增删改查api

  • Model.deleteMany()
  • Model.deleteOne()
  • Model.findById()
  • Model.findByIdAndDelete()
  • Model.findByIdAndRemove()
  • Model.findByIdAndUpdate()
  • Model.findOneAndDelete()
  • Model.findOneAndRemove()
  • Model.findOneAndUpdate()
  • Model.replaceOne()
  • Model.updateMany()
  • Model.updateOne()

解读Schema

mongoose的一切都是从Schema开始的。每个Scheam映射到MongoDB集合,并定义该集合中 documnet 的数据格式类型。

转载地址:http://hcexa.baihongyu.com/

你可能感兴趣的文章
公文管理解决方案
查看>>
使用sed插入tab
查看>>
ansible hosts文件详解
查看>>
屏幕录像专家录制超清视频教程如何解决转码后不清晰问题
查看>>
iotop命令性能监测与优化
查看>>
通用权限管理系统组件回答用户的常用问题:操作权限、用户角色、数据权限的解决方法...
查看>>
linux nc命令参数及用法详解--功能超级强大的网络工具netcat
查看>>
【JEECG Dubbo专题】jeecg-p3集成dubbo文档
查看>>
mysql的基本数据类型
查看>>
Java架构设计和开发中的小技巧
查看>>
java 远程debug设置
查看>>
Redis 负载监控——开源项目redis-monitor
查看>>
git-filter-branch
查看>>
require.js入门学习(share)
查看>>
导入数据的时候,MYSQL 报错:Data too long for column
查看>>
warning: unprotected private key file ssh
查看>>
Ubuntu12.04安装Samba服务器共享文件
查看>>
in_array,最好将第三个参数设置为true
查看>>
一年成为Emacs高手
查看>>
File的几个常用方法
查看>>