Mongoose.js - 人口和其他领域?

Posted

技术标签:

【中文标题】Mongoose.js - 人口和其他领域?【英文标题】:Mongoose.js - population and additional fields? 【发布时间】: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模型猫鼬模式是什么样的吗? 哦,是的,刚刚编辑过 【参考方案1】:

将架构更改为

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

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

【讨论】:

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

以上是关于Mongoose.js - 人口和其他领域?的主要内容,如果未能解决你的问题,请参考以下文章

在生成代理时使用实际人口密度

Mongoose:深人口(填充人口密集的领域)

Mongoose:深人口(填充人口密集的领域)

Mongoose.js 条件填充

mongoose.js 中模式部分的共享和重用策略

Express JS、Mongoose JS 和 Jade 中的 Textarea 换行符