【发布时间】:2016-05-03 23:58:52
【问题描述】:
我有以下猫鼬模型(摘录):
var subscriberSchema = new Schema({
name: String,
address: String
});
var Subscriber = mongoose.model('Subscriber', subscriberSchema);
var magazineSchema = new Schema({
title: String
});
var Magazine = mongoose.model('Magazine', magazineSchema);
var subscriptionSchema = new Schema({
owner: {type: Schema.Types.ObjectId, ref: 'Subscriber'},
magazine: {type: Schema.Types.ObjectId, ref: 'Magazine'},
metadata like price, start date, end date: ...
});
var Subscription = mongoose.model('Subscription', subscriptionSchema);
我有一条快速路线,向用户显示杂志列表:
let magazines = await Magazine.find();
if (!magazines) return next(err);
res.render('magazines', {
magazines: magazines
});
在这条路线中,如果用户订阅了该杂志,我想通过订阅加入杂志。
在 sql 中,这将是一个外连接,
select *
from magazines
outer join subscriptions
where subscriptions.magazine_id = magazine.id
and owner_id = $current_user_id
StackOverflow 上的其他问题/答案假定子架构 (magazine) 将具有对 subscriber 的 _creator 引用。但这里不是这种情况。订阅者和杂志是它们自己的实体,它们之间不应有直接的引用,只能通过subscription has-many-through 模型。
我将如何在猫鼬中做到这一点?
【问题讨论】:
-
对于外连接,这里可以使用 MongoDB 的聚合框架来解决您的问题。请参考这个mongodb.com/blog/post/…
标签: mongodb mongoose mongoose-populate