答案是更改架构。
从使用关系数据库的历史开始进行文档数据库开发时,您已经陷入许多开发人员面前的陷阱:MongoDB不是关系数据库,不应被视为一个。
您需要停止考虑外键和完美标准化的数据,而应使每个文档尽可能保持独立,并考虑如何在文档中最好地嵌入相关数据。
这并不意味着您也无法维护关联。它可能意味着这样的结构,其中您仅嵌入必要的详细信息,并在需要时查询完整记录:
var activitySchema = new mongoose.Schema({ event: { _id: { type: ObjectId, ref: "Event" }, name: String, private: String }, // ... other fields});重新考虑您的嵌入策略将 极大地 简化查询,并将查询数量保持在最低水平。
populate会使您的人数迅速增加,并且随着数据集的增长,这很可能会成为问题。



