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 基本用法的更多相关文章

  1. mongoose的用法(注:连接数据库)

    第一步:连接数据库: mongoose.connect('mongodb://'+user+':'+pass+'@mongo.duapp.com:'+port+'/xzWIRHYlWLAApdsfAz ...

  2. 在Mongoose中使用嵌套的populate处理数据

    假设有如下mongodb的schema定义: drawApply = new Schema({ salesId: { type: Schema.ObjectId, ref: 'sales' }, mo ...

  3. Mongoose学习参考文档——基础篇

    Mongoose学习参考文档 前言:本学习参考文档仅供参考,如有问题,师请雅正 一.快速通道 1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model ...

  4. mongoose学习笔记3--简单查询1

    简述 查询就是返回一个集合中的文档的子集 Mongoose 模型提供了 find. findOne. findById 三种方法用于文档查询. 为了方便后面课程的有效学习,我们先添加一些测试数据. T ...

  5. Mongoose学习参考文档

    一.快速通道 1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 Entit ...

  6. [js高手之路]Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件

    接着这篇文章[js高手之路]Node.js+jade抓取博客所有文章生成静态html文件继续,在这篇文章中实现了采集与静态文件的生成,在实际的采集项目中, 应该是先入库再选择性的生成静态文件.那么我选 ...

  7. [js高手之路]Node.js+jade+mongoose实战todolist(分页,ajax编辑,删除)

    该系列文章索引: [js高手之路]node js系列课程-创建简易web服务器与文件读写 [js高手之路]node js系列课程-图解express+supervisor+ejs用法 [js高手之路] ...

  8. [js高手之路] es6系列教程 - promise常见用法详解(resolve,reject,catch,then,all,race)

    关于promise我在之前的文章已经应用过好几次,如[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist,本文就来讲解下pro ...

  9. Mongoose之 SchemaTypes 数据类型

    SchemaTypes 数据类型 SchemaTypes handle definition of path defaults, validation, getters, setters, field ...

随机推荐

  1. 利用Code::Blocks搭建64位C++开发平台

    0.前言 随着64位计算机的普及,编写64位程序成为程序员基本的要求.我在<体验Code::Blocks下的C++编程>中描述了利用Code::Blocks官方提供的封装了编译器的安装包( ...

  2. win7环境搭建以太坊私链

    如何创建私链: 创建创世配置文件: 首先需要创建一个“创世”json配置文件,此文件描述了创世区块的一些参数.下面就是文件中的内容: { "coinbase": "0x0 ...

  3. mac系统Intellij Idea的java环境配置:JDK + Tomcat + Maven

    一.JAVA JDK查看与配置 1.查看java路径详细信息: /usr/libexec/java_home -V 2.java默认路径 jdk1.6: /System/Library/Java/Ja ...

  4. 02-12 Logistic(逻辑)回归

    目录 逻辑回归 一.逻辑回归学习目标 二.逻辑回归引入 三.逻辑回归详解 3.1 线性回归与逻辑回归 3.2 二元逻辑回归的假设函数 3.2.1 让步比 3.2.2 Sigmoid函数图像 3.3 二 ...

  5. Docker 安装Oracle

    1.使用docker 命令搜索oracle 镜像,前提是已安装了Docker docker  search oracle 2.下载相应版本的oracle 镜像 docker pull sath89/o ...

  6. PowerBI系列之什么是PowerBI

    大家好,我是小黎子!一个专注于数据分析整体数据仓库解决方案的程序猿!今天小黎子就给大家介绍一个数据分析工具由Microsoft出品的全新数据可视化工具Power BI.微软Excel很早就支持了数据透 ...

  7. Redis的几个核心机制底层原理

    #### 1.S_DOWN和O_DOWN ######   S_DOWN和O_DOWN两种宕机状态  (1).S_DOWN是主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机 s ...

  8. 【前端词典】几个有益的 CSS 小知识

    今天偷个懒,不长篇大论,分享几个你可能不知道的 CSS 小知识. 样式的顺序 CSS 代码:   HTML 代码:   记得之前这是一道比较火的 CSS 考题,当时好像是有不少的人答错(30% 以上) ...

  9. 渗透测试中Linux下反弹shell的认识

    最近老是觉得自己白天工作累,晚上理应休息 堕落了几天才发觉自己真垃圾,加紧向前吧. 0x00 前言 在平时渗透还是工作中经常会遇到shell反弹的情况,网上一搜反弹shell都是一大堆,但是真正遇到反 ...

  10. java控制执行流程

    控制执行流程 欢迎转载,转载烦请注明出处,谢谢. https://www.cnblogs.com/sx-wuyj/p/11177257.html java当中涉及到的关键字包括if-else.whil ...