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 ...
随机推荐
- 利用Code::Blocks搭建64位C++开发平台
0.前言 随着64位计算机的普及,编写64位程序成为程序员基本的要求.我在<体验Code::Blocks下的C++编程>中描述了利用Code::Blocks官方提供的封装了编译器的安装包( ...
- win7环境搭建以太坊私链
如何创建私链: 创建创世配置文件: 首先需要创建一个“创世”json配置文件,此文件描述了创世区块的一些参数.下面就是文件中的内容: { "coinbase": "0x0 ...
- mac系统Intellij Idea的java环境配置:JDK + Tomcat + Maven
一.JAVA JDK查看与配置 1.查看java路径详细信息: /usr/libexec/java_home -V 2.java默认路径 jdk1.6: /System/Library/Java/Ja ...
- 02-12 Logistic(逻辑)回归
目录 逻辑回归 一.逻辑回归学习目标 二.逻辑回归引入 三.逻辑回归详解 3.1 线性回归与逻辑回归 3.2 二元逻辑回归的假设函数 3.2.1 让步比 3.2.2 Sigmoid函数图像 3.3 二 ...
- Docker 安装Oracle
1.使用docker 命令搜索oracle 镜像,前提是已安装了Docker docker search oracle 2.下载相应版本的oracle 镜像 docker pull sath89/o ...
- PowerBI系列之什么是PowerBI
大家好,我是小黎子!一个专注于数据分析整体数据仓库解决方案的程序猿!今天小黎子就给大家介绍一个数据分析工具由Microsoft出品的全新数据可视化工具Power BI.微软Excel很早就支持了数据透 ...
- Redis的几个核心机制底层原理
#### 1.S_DOWN和O_DOWN ###### S_DOWN和O_DOWN两种宕机状态 (1).S_DOWN是主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机 s ...
- 【前端词典】几个有益的 CSS 小知识
今天偷个懒,不长篇大论,分享几个你可能不知道的 CSS 小知识. 样式的顺序 CSS 代码: HTML 代码: 记得之前这是一道比较火的 CSS 考题,当时好像是有不少的人答错(30% 以上) ...
- 渗透测试中Linux下反弹shell的认识
最近老是觉得自己白天工作累,晚上理应休息 堕落了几天才发觉自己真垃圾,加紧向前吧. 0x00 前言 在平时渗透还是工作中经常会遇到shell反弹的情况,网上一搜反弹shell都是一大堆,但是真正遇到反 ...
- java控制执行流程
控制执行流程 欢迎转载,转载烦请注明出处,谢谢. https://www.cnblogs.com/sx-wuyj/p/11177257.html java当中涉及到的关键字包括if-else.whil ...