所以在关系数据库中我可能有2个表,'User'和'Event',它们具有多对多的关系,因此连接表'UsersEvents'说。现在我有一些数据要存储在这个表上,而不是2个ID,就像一个名为'Enjoyed'的布尔值。
据我所知,在Mongo中,您可以在表格之间创建嵌入式链接,例如使用Mongoose
var Person = new Schema({
email: String,
events: [EventFeedback]
})
var Event = new Schema({ ... });
var EventFeedback = new Schema({
person: Schema.ObjectId,
event: Schema.ObjectId,
enjoyed: Boolean
});
但这真的是建模的最佳方式吗?我原以为EventFeedback中的所有内容都可以在Person.events中,它将被Event._id索引?或许这只是Mongoose的限制?
答案 0 :(得分:2)
试试这种方式
var EventScheme = new Schema({ ... });
mongoose.model('Event', EventScheme);
var PersonScheme = new Schema({
email: String,
events: [{
event: {
type: mongoose.Schema.ObjectId,
ref: 'Event'
},
enjoyed: Boolean
}]
});
答案 1 :(得分:1)
最好使用嵌入式文档而不是链接。
var Person = {
email: "joe.user@users.mongodb.org",
events: [
{code: "MONGONY2012", name: "Mongo NY", date: "5/23/2012", link: "http://www.10gen.com/events/mongo-nyc", enjoyed: true},
{code: "MONGOPHL2012", name: "Mongo Philly", date: "4/9/2012", link: "http://www.10gen.com/events/mongodb-philly", enjoyed: true}
]
}
您可以使用点表示法轻松查询Mongo事件:
db.people.find({"events.code": "MONGONY2012"})