【问题标题】:mongodb User with subdocument vs document with UserId带有子文档的 mongodb 用户与带有 UserId 的文档
【发布时间】:2015-07-18 16:50:24
【问题描述】:

我正在使用 meanjs,我想以一对多的关系存储一些用户数据。我的情况与文章示例类似,但文章只能通过用户访问。我希望路线类似于

Users/:userId/articles

Users/me/articles

问题 1 我应该坚持使用文章模型,还是应该将文章作为用户的子文档。例如

var UserSchema = new Schema({
    firstName: {
        type: String,
        trim: true,
        default: '',
        validate: [validateLocalStrategyProperty, 'Please fill in your first name']
    },
    lastName: {
        type: String,
        trim: true,
        default: '',
        validate: [validateLocalStrategyProperty, 'Please fill in your last name']
    },
    displayName: {
        type: String,
        trim: true
    },
    email: {
        type: String,
        trim: true,
        default: '',
        validate: [validateLocalStrategyProperty, 'Please fill in your email'],
        match: [/.+\@.+\..+/, 'Please fill a valid email address']
    },
    username: {
        type: String,
        unique: 'testing error message',
        required: 'Please fill in a username',
        trim: true
    },
    articles: [articleModel.schema],
    password: {
        type: String,
        default: '',
        validate: [validateLocalStrategyPassword, 'Password should be longer']
    },
    salt: {
        type: String
    },
    provider: {
        type: String,
        required: 'Provider is required'
    },
    providerData: {},
    additionalProvidersData: {},
    roles: {
        type: [{
            type: String,
            enum: ['user', 'store', 'admin']
        }],
        default: ['user']
    },
    updated: {
        type: Date
    },
    created: {
        type: Date,
        default: Date.now
    },
    /* For reset password */
    resetPasswordToken: {
        type: String
    },
    resetPasswordExpires: {
        type: Date
    }
});

问题 2 如果我将其设为子文档,我还能使用 $resource 函数还是必须创建自定义函数?

【问题讨论】:

  • 专家建议不要像用户的文章那样嵌入会继续无限增长的数据。
  • 感谢它让我更容易编写代码。
  • 最大 BSON 文档大小为 16 兆字节。最大文档大小有助于确保单个文档不会使用过多的 RAM,或者在传输期间不会使用过多的带宽。为了存储大于最大大小的文档,MongoDB 提供了 GridFS API。

标签: angularjs mongodb express mongoose meanjs


【解决方案1】:

最大 BSON 文档大小为 16 兆字节。最大文档大小有助于确保单个文档不会使用过多的 RAM,或者在传输期间不会使用过多的带宽。为了存储大于最大大小的文档,MongoDB 提供了 GridFS API。

【讨论】:

  • 那么这是否意味着如果文章大小可能超过 16MB,我应该作为单独的文档而不是子文档?
猜你喜欢
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多