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. C语言——2019秋季作业

    1.[你对软件工程专业或者计算机科学与技术专业专业了解是怎样? ] 答:1.软件工程专业是2002年国家教育部新增专业,随着计算机应用领域的不断扩大及中国经济的不断发展,软件工程专业成为一个新的热门专 ...

  2. ELK系列(一):安装(elasticsearch + logstash + kibana)

    因为公司使用ELK的缘故,这两天尝试在阿里云上安装了下ELK,这里做个笔记,有兴趣的同学可以看下. 先大致介绍下ELK,ELK是三个组件的缩写,分别是elasticsearch.logstash.ki ...

  3. Linux上编译安装PHP

    这篇文章主要介绍了关于Linux上编译安装PHP,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 之前在服务器上编译安装了PHP运行环境,但是安装完过了一段时间就差不多忘记了,只是零零星 ...

  4. ThinkPHP框架快速开发网站

    使用ThinkPHP框架快速搭建网站 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.如果对于同样是Web方面新手的你有一丝丝帮助 ...

  5. aircrack-ng wifi密码破解

    wifi密码破解 步骤1:查看网卡信息 ifconfig 找到你要用到的网卡 步骤2:启动网卡监听模式 airmon-ng start wlan0 我的是wlp2s0 步骤三:查看网卡变化 wlan0 ...

  6. 高清屏下canvas重置尺寸引发的问题

    我们知道,清空canvas画布内容有以下两个方法. 第一种方法是cearRect函数: context.cearRect(0,0,canvas.width,canvas.height) 第二种方法就是 ...

  7. php实现商城秒杀

    这一次总结和分享用Redis实现分布式锁来完成电商的秒杀功能.先扯点个人观点,之前我看了一篇博文说博客园的文章大部分都是分享代码,博文里强调说分享思路比分享代码更重要(貌似大概是这个意思,若有误请谅解 ...

  8. (4)一起来看下mybatis框架的缓存原理吧

    本文是作者原创,版权归作者所有.若要转载,请注明出处.本文只贴我觉得比较重要的源码,其他不重要非关键的就不贴了 我们知道.使用缓存可以更快的获取数据,避免频繁直接查询数据库,节省资源. MyBatis ...

  9. BS结构的一个注册用户的功能

    注册用户功能   学了Java一段时间,就想折腾折腾,就做了一个注册的功能,用HTML写了一个网页上的比较简陋的界面,用Java做了一个后台简陋的服务器处理数据,最后将数据存储到数据库中. 注册界面 ...

  10. JAVA阻塞(IO)和非阻塞(NIO)

    查看这篇文章,了解更多关于Java的阻塞和非阻塞替代创建套接字的信息. 套接字使用TCP / IP传输协议,是两台主机之间的最后一块网络通信. 您通常不必处理它们,因为它们之上构建了协议,如HTTP或 ...