我在找一些关于mongoDB的帮助。我正在和mongodb和mongoose一起做一个音乐节点项目。我有3个mongoose模式:
// define the schema for our user model
var userSchema = mongoose.Schema({
_id: Schema.Types.ObjectId,
local: {
username: String,
password: String
},
spotify: {
id: String,
token: String,
username: String,
profileUrl: String,
email: String
},
deezer: {
id: String,
token: String,
username: String,
profileUrl: String,
email: String
},
youtube: {
id: String,
token: String,
displayName: String
}
});
var musicSchema = mongoose.Schema({
_id: Schema.Types.ObjectId,
author_id: {
type: Schema.Types.ObjectId,
ref: 'User'
},
url: String,
file: String,
title: String,
artistName: String,
deezerId: Number,
itunesId: Number,
position: Number,
duration: Number,
deezerAlbum: Number,
discNumber: Number,
album: String,
releaseDate: Date,
nbTracks: Number,
genreId: Number,
cover: String,
genre: String,
creationDate: {
type: Date,
default: Date.now
}
});
var playlistSchema = mongoose.Schema({
_id: Schema.Types.ObjectId,
name: String,
author_id: {
type: Schema.Types.ObjectId,
ref: 'User'
},
contributor_id: [{
type: Schema.Types.ObjectId,
ref: 'User'
}],
tag: [String],
importedPl: [String],
musics: [Schema.Types.ObjectId],
syncImportedPlaylist: {
type: Boolean,
default: false
},
autoAddSimilarSong: {
type: Boolean,
default: false
},
creationDate: {
type: Date,
default: Date.now
}
});
简单地解释一下,事情是这样的。我有一个用户,音乐和播放列表模式。我想提取一个播放列表,里面有所有的音乐和用户,这样最终的JS对象看起来就像这样:
{
_id: someID
name: String,
author: {
_id: someID
local: {...},
spotify: {...},
deezer: {...},
youtube: {...}
},
contributor: [{
_id: someID
local: {...},
spotify: {...},
deezer: {...},
youtube: {...}
}, {
_id: someID
local: {...},
spotify: {...},
deezer: {...},
youtube: {...}
}],
musics_ids: [{
_id: someID
author: {
_id: someID
local: {...},
spotify: {...},
deezer: {...},
youtube: {...}
},
url: String,
file: String,
title: String,
...allTheMusicSchemaInfo...: ...
}],
...allThePlaylistSchemaInfo...: ...
}
我想用数据本身替换..._id (即用用户数据替换author_id,musics_ids也是如此)。
编辑:在这里回答(thx @matheusds):https://stackoverflow.com/a/48727050/7841588
发布于 2018-02-11 08:35:41
要引用其他集合中的文档,可以使用more details here中描述的populate方法。
此方法自动将文档中的路径替换为其他集合中的文档。
https://stackoverflow.com/questions/48726719
复制相似问题