为什么Mongoose在父模型中保存了子id的引用?

时间:2014-10-28 13:52:12

标签: node.js mongodb mongoose

我正在尝试进入MongoDB和Node.js,发现最常用的模块是Mongoose。我喜欢创建像mysql这样的架构的想法,它很容易使用。

我不明白的一件事是参考文献。

var SessionSchema = new Schema({
    created: { type: Date, default: Date.now },
    updated: { type: Date, default: Date.now },
    client: { type: String, required: true },
    events: [{ type: Schema.Types.ObjectId, ref: 'Event', required: true }]
});


var EventSchema = new Schema({
    created: { type: Date, default: Date.now },
    session: { type: Schema.Types.ObjectId, ref: 'Session', childPath: 'events', required: true },
    data: Schema.Types.Mixed
});

现在有一个问题 - 为什么我需要在会话中引用事件ID?为什么不查询eventsModel.find({session:session._id})?

我担心它会创建庞大的会话文档,因为会话甚至可以有数百个事件。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

这取决于,通常的常见路径是制作这些引用,以便稍后使用引用数据填充查询,正如我从人口文档中提取的那样:

  

MongoDB中没有连接,但有时我们仍然需要引用   到其他馆藏的文件。这就是人口涌入的地方。

如果您对人口感兴趣,请将其设为高峰here

你可以手动完成,不会对你的需求和查询产生任何伤害。