首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongodb数据抽取

Mongodb数据抽取
EN

Stack Overflow用户
提问于 2018-02-11 07:34:05
回答 1查看 58关注 0票数 0

我在找一些关于mongoDB的帮助。我正在和mongodb和mongoose一起做一个音乐节点项目。我有3个mongoose模式:

代码语言:javascript
复制
// 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对象看起来就像这样:

代码语言:javascript
复制
{
  _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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-11 08:35:41

要引用其他集合中的文档,可以使用more details here中描述的populate方法。

此方法自动将文档中的路径替换为其他集合中的文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48726719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档