博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongodb( 实现join)
阅读量:5233 次
发布时间:2019-06-14

本文共 1367 字,大约阅读时间需要 4 分钟。

mongodb提供ref和populate的方法,支持类似join的SQL操作。本文给出一个实际的例子:

1. 数据1:

var daob = new Schema({    user: {        type: String    },    title: {        type: String    },    tag: [{        type: String    }],    content: {        type: String    },    count: {        type: Number,        'default':0    }});

2. 数据2:

var daoa = new Schema({    name: {        type: String    },    time: {        type: Date    },    conments: [{        type: mongoose.Schema.ObjectId, //这里保存daob的id,mongo中只能使用collection的_id        ref: 'daob'    }]});

3. 插入操作:

var b = new daobmodel({        user: 'fredric',        title: 'title1',        tag: ['tag1', 'tag2', 'tag3'],        content: 'nothing to say, just test',    });    b.save(function(err) {        var a = new daoamodel({            name: 'sinny',            time: new Date(),            conments: [b._id]        });        a.save(function(err) {            return callback(err);        })    });

4. 查找操作:

mongo不支持真正意义上的join操作,因此本例中的需求只能分拆成两步

//这里可以采用聚合来实现比较复杂的查询    daobmodel.find({        'tag': {            $in: ['tag1']        }    }, {        _id: 1    }, function(err, ids) {        daoamodel.find({            conments: {                $in: ids            }        }).populate('conments').exec(function(err, docs) {            return callback(err, docs);        });    });

转载于:https://www.cnblogs.com/Fredric-2013/p/4417960.html

你可能感兴趣的文章
MySQL简介
查看>>
设计模式之桥接模式(Bridge)
查看>>
jquery的$(document).ready()和onload的加载顺序
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
【codevs1033】 蚯蚓的游戏问题
查看>>
【程序执行原理】
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
PHP 导出 Excell
查看>>
Java基础教程——网络基础知识
查看>>
自己到底要的是什么
查看>>
Kruskal基础最小生成树
查看>>
ubuntu 14.04 安装搜狗拼音输入法
查看>>
浅谈算法和数据结构: 一 栈和队列
查看>>