Mongoose即使是简单的表查询
从我原来的博客尖,欢迎大家光临
像我这篇文章所说的基于Node.js + jade + Mongoose 模仿gokk.tv。当时停止开发是由于我深深的感觉到当时想错了,应该用两个Schema。而不是一个以下又有数组来存。这样取数据是方便,当时分页相当麻烦。不能使用原生提供的limit方法。
今天看到一本书上有讲。尝试了一把,记录下来
我们实验的场景为一个班级有N多学生。先通过学生ID找到班级名称(是不是被玩腻了?)
先来将Schema定义好
ClazzSchema :
var mongoose = require('mongoose')
var ClazzSchema = new mongoose.Schema({
clazzName:String
})
//其它方法省略..
}
module.exports = ClazzSchema
StudentSchema :
var mongoose = require('mongoose')
var StudentSchema = new mongoose.Schema({
name:String,
clazzID : {
type : mongoose.Schema.ObjectId,
ref : 'Clazz'
}
})
StudentSchema.statics = {
findClazzNameByStudentId:function(studentId, callback){
return this
.findOne({_id : studentId}).populate('clazzID')
.exec(callback)
}
//其它方法省略..
}
module.exports = StudentSchema
能够看到。主须要将ClazzID设为ref到Clazz,依赖为你建立Model时的名称就能够了,要查询Clzz使用populate
以下是Model
var mongoose = require('mongoose')
var ClazzSchema = require('../schemas/clazzSchema')
var Clazz = mongoose.model('Clazz',ClazzSchema)
module.exports = Clazz
var mongoose = require('mongoose')
var StudentSchema = require('../schemas/studentSchema')
var Student = mongoose.model('Student',StudentSchema)
module.exports = Student
大同小异,着重看test.js
var mongoose = require('mongoose')
var Clazz = require('./models/clazzModel')
var Student = require('./models/studentModel')
//var db = mongoose.createConnection('localhost', 'gokk')
mongoose.connect('mongodb://localhost/test')
/*var clazz = new Clazz(
{
clazzName:'软件2班'
}
);
clazz.save(function (argument){
console.log('true');
});*/
/*var student = new Student({
name : 'hacke2',
clazzID : '542b5fcc49df6e741d8d15f5'
})
student.save(function (err){
console.log('true');
})*/
Student.findClazzNameByStudentId('542b600a683d59a80d4ee632', function (err, student){
if(err) console.log(err);
console.log(student.clazzID.clazzName);
})
之前加入了两班级:软件一班和软件二班
我们在新增hacke2时将classID设为软件2班的。查新hacke2时自己主动就会把关键的 Class查询到
{ _id: 542b600a683d59a80d4ee632,
name: 'hacke2',
clazzID: { _id: 542b5fcc49df6e741d8d15f5, clazzName: '软件2班', __v: 0 },
__v: 0 }
end from http://www.hacke2.cn
Mongoose即使是简单的表查询的更多相关文章
- mysql基础操作(四):简单多表查询
-- 创建部门 (主表) create table dept( id int primary key auto_increment, name varchar(20) ); -- 创建员工 (副表) ...
- dapper 简单多表查询
public List<Book> GetBookList() { List<Book> bList = null; try { using (var t = new SqlC ...
- Oracle基础(五):多表查询
一.多表查询 (一)简单多表查询 1.多表查询的机制 1)SQL: SELECT * FROM emp; --14条记录 SELECT * FROM dept;--4条记录 SELECT * FROM ...
- Mongoose中的关联表查询 && 聚合查询
注:阅读此篇文章,需要有一定的Mongo基础.基本的不会再重复介绍. 例: 有两张表,一张是博客列表,另外一张是博客的标签表.现在我们要做两张表的插入和关联查询. 创建两张表的Schema 主表bl ...
- MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...
- MySQL简单查询详解-单表查询
MySQL简单查询详解-单表查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询的执行路径 一条SQL查询语句的执行过程大致如下图所示: 1>.客户端和服务端通过my ...
- MySQL简单查询和单表查询
MySQL记录操作 概览 MySQL数据操作: DML 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用 ...
- Mongoose多表查询
文章来自 两个表关联查询aggregate 多个表关联查询aggregate populate多表关联查询 多表查询的两个方式 一个是aggregate聚合 一个是populate Schema的外表 ...
- MySQL--单表查询、多表查询简单概述
表的前期准备: create table emp( id int not null unique auto_increment, name ) not null, sex enum('male','f ...
随机推荐
- 你真的了解JAVA中与Webservice相关的规范和实现吗?
非常多人在项目中使用Webservice,仅仅是知道怎样公布Webservice,怎样调用Webservice,但真要论其来龙去脉,还真不一定清楚. 一切一切还要从我们伟大的sun公司规范说起. JA ...
- 利用未公开API获取终端会话闲置时间(Idle Time)和登入时间(Logon Time)
利用未公开API获取终端会话闲置时间(Idle Time)和登入时间(Logon Time)作者:Tuuzed(土仔) 发表于:2008年3月3日23:12:38 版权声明:可以任意转载,转载时请 ...
- eclipse设置关联文件打开方式
window->preferences: General->Editors->File Associations
- GitHub 优秀Android 开源项目
阅读目录 1.Xabber客户端 2.oschina客户端 3.手机安全管家 4.星座连萌 5.玲闹铃 6.魔乐盒 7.PWP日历 8.Apollo音乐播放器 9.夏普名片识别 10.高仿人人网 11 ...
- ZOJ 3635 Cinema in Akiba(线段树)
Cinema in Akiba (CIA) is a small but very popular cinema in Akihabara. Every night the cinema is ful ...
- android关于实现滑动界面
首先要说的是,滑动界面,我们需要一个以上的view切换,实际上可以使用ArrayList<View> pageViews要保存view信息,然后切换 LayoutInflater infl ...
- java nio-理解同步、异步,阻塞和非阻塞
理解同步.异步,阻塞和非阻塞 结论:阻塞.非阻塞与是否同步异步无关. 转自知乎 “阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解, ...
- 传京东副总裁蒉莺春或将接管POP业务-搜狐IT
传京东副总裁蒉莺春或将接管POP业务-搜狐IT 传京东副总裁蒉莺春或将接管POP业务
- javascript它【蛇系列】第一弹:简单的蛇实现
参考博客:http://blog.csdn.net/sunxing007/article/details/4187038 上面的博客是一个参考,竟第一次做.真让自己盲人摸象做不出来. 只是我在其上做了 ...
- EF 打造冲不掉的标签
应用场景: 在用EF的Datebase Fitst模式开发时,实体都是有T4文件根据数据库来生成,并且是每次保存都会重新生成,如果我们在有T4生成的实体类上加上验证标签,那么以保存就会丢失, 解决方案 ...