文章来自

两个表关联查询aggregate

多个表关联查询aggregate

populate多表关联查询

多表查询的两个方式

一个是aggregate聚合

一个是populate

Schema的外表连接应该有个ref字段表示去那个表查

populate

var Schema = monogoose.Schema;

var studentSchema = new Schema({
name : String,
age : String,
school: {
type: Schema.Types.ObjectId,
ref : 'school'
}
});
var schoolSchema = new Schema({
name : String,
students: [
{
type: Schema.Types.ObjectId,
ref : 'students'
}
],
city : {
type: Schema.Types.ObjectId,
ref : 'city'
}
});
var citySchema = new Schema({
name : String,
school: [
{
type: Schema.Types.ObjectId,
ref : 'school'
}
]
}); var Student = mongoose.model('student', studentSchema);
var School = mongoose.model("school", schoolSchema);
var City = mongoose.model("city", citySchema); // 存点数据,可以多存几条
var city = new City({
name : '北京',
school: []
});
city.save(function (err, city) {
var school = new School({
name : 'Test',
students: [],
city : city._id
});
school.save(function (err, school) {
var student = new Student({
name : 'Tom',
age : 20,
school: school._id
});
student.save();
});
}); // 这个需要先注释,先把数据存好,再把存数据的方法注释,再查
Student.find({name: 'Tom'})
.populate({
path: 'school',
populate: {
path: 'city',
}
})
.exec(function (err, data) {
console.log(data);
})

Mongoose多表查询的更多相关文章

  1. Mongoose中的关联表查询 && 聚合查询

    注:阅读此篇文章,需要有一定的Mongo基础.基本的不会再重复介绍. 例:  有两张表,一张是博客列表,另外一张是博客的标签表.现在我们要做两张表的插入和关联查询. 创建两张表的Schema 主表bl ...

  2. Mongoose 多表(N个表)关联查询aggregate

    Mongoose 多表(N个表)关联查询概述 需求:文章(article),文章分类(articlecate),用户(user)这三个表之间的关系,一篇文章对应文章分类表中的某个类型,对应着用户表中的 ...

  3. Mongoose中关联查询populate的使用

    MongoDB中没有join的特性,因此无法使用join进行表的连接和关联查询,在Mongoose中封装了populate方法,在定义一个 Schema 的时候可以指定了其中的字段(属性)是另一个Sc ...

  4. NodeJs操作MongoDB之多表查询($lookup)与常见问题

    NodeJs操作MongoDB之多表查询($lookup)与常见问题 一,方法介绍 aggregate()方法来对数据进行聚合操作.aggregate()方法的语法如下 1 aggregate(ope ...

  5. django(3) 一对多跨表查询、ajax、多对多

    1.一对多跨表查询获取数据的三种形式:对象.字典.元组 例:有host与business两张表,host与business的id字段关联,business在host表中的对象名是b,  通过查询hos ...

  6. Mysql常用表操作 | 单表查询

    160905 常用表操作 1. mysql -u root -p 回车 输入密码   2. 显示数据库列表 show databases     3. 进入某数据库 use database data ...

  7. Oracle_多表查询

    SQL多表查询 等值和不等值连接查询 从多个表中获取数据:如果在查询的时候,直接从多个表中获取数据.没有添加条件判断,会出现"笛卡尔积"错误 笛卡尔积错误 笛卡尔集会在下面条件下产 ...

  8. mysql,SQL标准,多表查询中内连接,外连接,自然连接等详解之查询结果集的笛卡尔积的演化

    先附上数据. CREATE TABLE `course` ( `cno` ) NOT NULL, `cname` ) CHARACTER SET utf8 NOT NULL, `ctime` ) NO ...

  9. MyBatis实现关联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

随机推荐

  1. Ngnix调整

    1.隐藏版本号,防止针对版本攻击   http {    server_tokens off;2.增加并发连接   2.1 worker_processes :改为CPU核数一致,因为异步IO进程是单 ...

  2. 洛谷P1198 [JSOI2008]最大数(线段树)

    题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制:LLL不超过当前数列的长度.(L> ...

  3. ls命令与cd命令

    ls命令用于显示文件目录列表,当使用ls命令时,默认显示的只有非隐藏文件或文件夹(隐藏文件在linux中前面有 ' . ' ),当不加参数时,显示当前目录. 1.ls命令语法 ls [参数][目标文件 ...

  4. free to monitor your sqlserver easy and safe and ...

    Unlike AWR in Oracle, Sqlserver does not have offical way to make history performance information fo ...

  5. Android Studio的HAXM不支持虚拟机

    因为我的计算机是服务器,不支持虚拟机,所以报这个错了. 解决方式是直接连接物理手机,打开USB调试,安装驱动,运行项目即可.

  6. 「ZJOI2013」K大数查询

    「ZJOI2013」K大数查询 传送门 整体二分,修改的时候用线段树代替树状数组即可. 参考代码: #include <cstdio> #define rg register #defin ...

  7. Write-up-Bulldog2

    关于 下载地址:点我 哔哩哔哩:哔哩哔哩 信息收集 网卡:vboxnet0,192.168.56.1/24,Nmap扫存活主机发现IP为192.168.56.101 ➜ ~ nmap -sn 192. ...

  8. 解决Missing artifact com.microsoft.sqlserver:sqljdbc4:jar:4.0问题

    当我们项目中用到的数据库为sql server时  我们一般在maven项目的pom.xml只添加依赖: <dependency>    <groupId>com.micros ...

  9. iis下发布MVC网站

    1.首先检查有没有安装iis,没有的话先安装iis 2. 3.选择应用程序池的时候看有没有asp.net 4.0 如果没有先安装. 首先以管理员身份打开“运行”输入cd C:\Windows\Micr ...

  10. App在iTunes Store上的地址

    之前可以在电脑上的iTunes上直接搜索到适用于iPhone.iPad的App,进而下载ipa或者复制它的URL. 记得从2017年3月开始就没有这个功能了. ==================== ...