猫鼬一对多,“许多”集合中没有参考

时间:2020-05-21 09:44:26

标签: node.js database mongodb mongoose one-to-many

我正在设计一个项目,需要在其中存储用户和歌曲。每个用户都有自己的歌曲(技术上只能达到10,000首)。

我最初的想法是拥有UsersSongs的集合。在User Schema内,我将有一个引用该用户歌曲的数组:

    const userSchema = new mongoose.Schema({
        username: String,
        ...
        songs: [{ type: mongoose.Schema.Types.ObjectId, ref: "Song" }],
        ...
    }

歌曲集合不会对用户有任何引用,因为许多用户显然会保存相同的歌曲,因此简单地使用包含歌曲但不引用任何其他内容的集合会更有意义。

在研究了如何与Mongoose实现一对多关系(运气不佳)之后,我发现了MongoDB关于这些类型关系的文档:

为避免重复出版商数据,请使用引用并将出版商信息与书本分开保存。

使用引用时,关系的增长决定了将引用存储在何处。如果每个出版商的图书数量很少且增长有限,则有时将图书参考存储在出版商文档中可能会很有用。否则,如果每个出版商的书籍数量不受限制,则此数据模型将导致可变的,不断增长的阵列。

为避免可变的数组增长,请将出版商的参考文献存储在书籍文档中

在示例中,他们使用出版商​​和书籍的集合,但是重点是他们建议将参考文献存储在“许多”集合中。我认为我无法在我的项目中做到这一点,因为一首歌与拥有该首歌的用户之间应该没有任何联系。

我不确定在这种情况下应该做什么或如何设计我的项目。有什么帮助吗?谢谢!

0 个答案:

没有答案
相关问题