Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 我应该在Mongo保留柜台吗?_Mongodb_Mongoose - Fatal编程技术网

Mongodb 我应该在Mongo保留柜台吗?

Mongodb 我应该在Mongo保留柜台吗?,mongodb,mongoose,Mongodb,Mongoose,我有两个收藏:曲目和用户 简化: trackSchema = new mongoose.Schema title: String artist: String userId: String playlists: [String] userSchema = new mongoose.Schema username: String trackCount: Integer playlists: {} 因此user.playlists记录每个播

我有两个收藏:曲目和用户

简化:

trackSchema = new mongoose.Schema
    title: String
    artist: String
    userId: String
    playlists: [String]

userSchema = new mongoose.Schema
    username: String
    trackCount: Integer
    playlists: {}
因此user.playlists记录每个播放列表中的曲目数量,trackCount记录用户的曲目总数

假设user1有两个曲目,track1和track2。两者都属于一个名为myplaylist的播放列表,我会

track1.playlists = ["myplaylist"]
track2.playlists = ["myplaylist"]
user1.playlists = { myplaylist: 2 }
user1.trackCount = 2

以这种方式跟踪计数器是一种好方法吗?我发现这会使实现复杂化,但我确保Mongo不会在每次我需要时查询计数,这有意义吗?

这取决于您将如何存储播放列表和曲目。是否每个用户都有一组播放列表,然后每个播放列表都有一组曲目?如果是这样,不要在用户级别存储计数。相反,只需抓取整个对象,您就可以检查数组的长度。曲目是一个集合,但播放列表是非规范化的,它存储在曲目和用户中。如果您的应用程序需要并经常使用这些内容,请编辑该问题以提供更多信息,这似乎值得维护。