Mongoose 基本用法

1. SchemaTypes数据类型
| 数据类型 | 描述 |
|---|---|
| String | 字符串 |
| Number | 数字 |
| Date | 日期 |
| Boolean | 布尔值 |
| Mixed | 混合 |
| Objectid | 对象ID |
| Array | 数组 |
2. 基本用法
首先创建3张表:
var studentSchema = new student({
name: { // 学生姓名
type: String,
required: true
},
classNo: { // 班级编号
type: String
},
createTime: { // 创建时间
type: Date,
default: Date.now
}
})
var ClassSchema = new classNo({
className: { // 班级名称
type: String,
required: true,
unique: true
},
teaNo:{ // 教师编号
type: String
},
createTime: {
type: Date,
default: Date.now
}
})
var TeaSchema = new teacher({
teaName: { // 教师名称
type: String,
required: true,
unique: true
},
createTime: {
type: Date,
default: Date.now
}
})
查询全部
function findAll() {
stu.find(function (err, ret) {
if (err) {
console.log('查询失败')
} else {
console.log(ret)
}
})
}
分页查询(
limit: 需要显示多少条数据,skip: 跳过多少数据 )
function findAll() {
stu.find(function (err, ret) {
if (err) {
console.log('查询失败')
} else {
console.log(ret)
}
}).limit(2)
.skip(2)
}
根据时间倒叙查询
sort
function findAll() {
stu.find(function (err, ret) {
if (err) {
console.log('查询失败')
} else {
console.log(ret)
}
}).sort({createTime: -1})
}
按名字查询(返回数组)
function findName() {
stu.find({
name: '小名'
}, function (err, ret) {
console.log(ret)
})
}
返回值:
[ { _id: 5c0894c217973525c41d0ede,
name: '小名',
classNo: '5c08944bfb6d6720cca60214',
createTime: 2018-12-06T03:17:22.933Z,
__v: 0 } ]
按名字查询(返回对象)
function findName() {
stu.findOne({
name: '小名'
}, function (err, ret) {
console.log(ret)
})
}
返回值:
{ _id: 5c0894c217973525c41d0ede,
name: '小名',
classNo: '5c08944bfb6d6720cca60214',
createTime: 2018-12-06T03:17:22.933Z,
__v: 0 }
OR 条件查询
function findAll() {
stu.find({
$or: [
{name: '哎哎哎'},
{classNo: '5c08944bfb6d6720cca60214'}
]
},function (err, ret) {
if (err) {
console.log('查询失败')
} else {
console.log(ret)
}
})
}
模糊查询 (查询名字 带
小的数据)
function findAll() {
stu.find({
name: /小/
},function (err, ret) {
if (err) {
console.log('查询失败')
} else {
console.log(ret)
}
})
}
找出名字 带
小,且只输出name字段 【注意】: _id字段默认输出
function findAll() {
stu.find({
name: /小/
}, 'name' ,function (err, ret) {
if (err) {
console.log('查询失败')
} else {
console.log(ret)
}
})
}
不带 _id ,可以进行如下设置
function findAll() {
stu.find({
name: /小/
}, {'name': 1, _id: 0} ,function (err, ret) {
if (err) {
console.log('查询失败')
} else {
console.log(ret)
}
})
}
3. 常用查询条件
$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个元素
参考文档
Mongoose 基本用法的更多相关文章
- mongoose的用法(注:连接数据库)
第一步:连接数据库: mongoose.connect('mongodb://'+user+':'+pass+'@mongo.duapp.com:'+port+'/xzWIRHYlWLAApdsfAz ...
- 在Mongoose中使用嵌套的populate处理数据
假设有如下mongodb的schema定义: drawApply = new Schema({ salesId: { type: Schema.ObjectId, ref: 'sales' }, mo ...
- Mongoose学习参考文档——基础篇
Mongoose学习参考文档 前言:本学习参考文档仅供参考,如有问题,师请雅正 一.快速通道 1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model ...
- mongoose学习笔记3--简单查询1
简述 查询就是返回一个集合中的文档的子集 Mongoose 模型提供了 find. findOne. findById 三种方法用于文档查询. 为了方便后面课程的有效学习,我们先添加一些测试数据. T ...
- Mongoose学习参考文档
一.快速通道 1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 Entit ...
- [js高手之路]Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件
接着这篇文章[js高手之路]Node.js+jade抓取博客所有文章生成静态html文件继续,在这篇文章中实现了采集与静态文件的生成,在实际的采集项目中, 应该是先入库再选择性的生成静态文件.那么我选 ...
- [js高手之路]Node.js+jade+mongoose实战todolist(分页,ajax编辑,删除)
该系列文章索引: [js高手之路]node js系列课程-创建简易web服务器与文件读写 [js高手之路]node js系列课程-图解express+supervisor+ejs用法 [js高手之路] ...
- [js高手之路] es6系列教程 - promise常见用法详解(resolve,reject,catch,then,all,race)
关于promise我在之前的文章已经应用过好几次,如[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist,本文就来讲解下pro ...
- Mongoose之 SchemaTypes 数据类型
SchemaTypes 数据类型 SchemaTypes handle definition of path defaults, validation, getters, setters, field ...
随机推荐
- shiro使用注解(@RequiresPermissions等)不无效及异常处理
1.注解不生效 在shiro配置类中加上如下代码: /** * Shiro生命周期处理器 */ @Bean(name = "lifecycleBeanPostProcessor") ...
- springboot2.0+ 使用拦截器导致静态资源被拦截
在spring1.0+的版本中,配置拦截器后是不会拦截静态资源的.其配置如下: @Configuration public class WebMvcConfig extends WebMvcConfi ...
- 玩转 SpringBoot 2 之整合 JWT 上篇
前言 该文主要带你了解什么是 JWT,以及JWT 定义和先关概念的介绍,并通过简单Demo 带你了解如何使用 SpringBoot 2 整合 JWT. 介绍前在这里我们来探讨一下如何学习一门新的技术, ...
- Disruptor—核心概念及体验
本文基于最新的3.4.2的版本文档进行翻译,翻译自: https://github.com/LMAX-Exchange/disruptor/wiki/Introduction https://gith ...
- php常用操作(第二版)
1.多个字段多重排序 function sortArrByManyField(){ $args = func_get_args(); // 获取函数的参数的数组 if(empty($args)){ r ...
- MongoDB 学习笔记之 WriteConcern
WriteConcern: 转载:MongoDB WriteConcern(写关注)机制 http://www.ywnds.com/?p=3688&viewuser=40 MongoDB部署模 ...
- Web调用Linux客户端remmina运维
相信你遇到过这样的场景,在浏览器网页中点击QQ图标咨询,就能唤起本机的装的qq或tim,下载百度网盘的资源的时候,点击链接浏览器会启动本地百度云进行下载. 最近因为项目需要,也要实现类似的操作,不 ...
- .Net Core删除ClientApp目录,重新生成报错解决办法
因为在老的项目上做修改,需要删除单独的spa目录,就把ClientApp删掉了.但是重新生成报错,在VS2017界面上也没找到在什么地方配置.最后发现在csproj上里面可以去掉spa的配置 < ...
- 【TencentOS tiny】深度源码分析(3)——队列
队列基本概念 队列是一种常用于任务间通信的数据结构,队列可以在任务与任务间.中断和任务间传递消息,实现了任务接收来自其他任务或中断的不固定长度的消息,任务能够从队列里面读取消息,当队列中的消息是空时, ...
- e课表项目第二次冲刺周期第一天
昨天干了什么? 昨天与我们小组的成员商量了一个重大的决定,由于我们第一次冲刺周期的成果,就是我们决定我们要转型发展. 今天干了什么? 查阅相关的资料,我们正式决定要做一款学习的课程表APP,把简易作为 ...