【问题标题】:Mongoose.js - population and additional fields?Mongoose.js - 人口和其他领域?
【发布时间】:2015-06-06 09:00:03
【问题描述】:

我想向 UserModel 添加一些额外的数据,例如 watchedMovies,并且我有以下架构:

let userSchema = new Schema({
  watchedMovies: [{
    type: Schema.Types.ObjectId,
    ref: 'Movie'
  }]
})

和:

let movieSchema = new Schema({
  title: String
})

我想知道是否可以向 watchedMovies 对象添加任何其他字段并将其与 ObjectId 一起存储?我想添加 watchedAt 日期,所以当我用 UserModel.find().populate('watchedMovies', 'title').exec(...) 填充 watchedMovies 时,我会得到类似的信息:

{
  _id: ObjectId(UserId),
  watchedMovies: [{
    _id: ObjectId(...),
    title: 'Some title',
    watchedAt: TimeStamp
  }]
}

watchedAt 属性指定何时将(日期对象)引用添加到 UserModel

mongoose 是否可行?我应该如何更改架构?

谢谢

【问题讨论】:

  • 你能编辑你的问题并展示Movie模型猫鼬模式是什么样的吗?
  • 哦,是的,刚刚编辑过

标签: node.js mongodb mongoose mongoose-populate


【解决方案1】:

将架构更改为

let userSchema = new Schema({
  watchedMovies: [{
    movie: {
        type: Schema.Types.ObjectId,
        ref: 'Movie'
    },
    watchedAt: Date
  }]
})

然后你可以通过.populate('watchedMovies.movie')填充

【讨论】:

  • 我知道,但问题不在于这个。
  • 那么您的问题到底是什么?对我来说,当您使用.populate 时,这听起来像是您在问如何获取更多字段而不仅仅是标题。这不是一个非常有用的方式来回应不正确的答案
  • 当我添加对用户模型的引用(电影的引用)时,我想存储该引用何时保存的时间戳,即知道用户何时观看该电影
  • 我刚试过,好像不行。它应该工作并且我做错了什么,还是你试图猜测实现? :)
  • 不知道昨天发生了什么(可能已经太晚了),但现在早上再次尝试后 - 它似乎只是按预期工作。非常感谢!
猜你喜欢
  • 2013-06-29
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2013-09-22
  • 2014-08-09
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多