gpt4 book ai didi

mongodb - Node.js - Mongoose/MongoDB - 模型架构

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:57 25 4
gpt4 key购买 nike

我正在 Node.js 中创建一个博客系统,并使用 mongodb 作为数据库。

我有这样的内容:(博客文章):

// COMMENTS SCHEMA:
// ---------------------------------------
var Comments = new Schema({

author: {
type: String
},
content: {
type: String
},
date_entered: {
type: Date,
default: Date.now
}

});
exports.Comments = mongoose.model('Comments',Comments);
var Tags = new Schema({
name: {
type: String
}
});
exports.Tags = mongoose.model('Tags',Tags);


// CONTENT SCHEMA:
// ---------------------------------------
exports.Contents = mongoose.model('Contents', new Schema({

title: {
type: String
},
author: {
type: String
},
permalink: {
type: String,
unique: true,
sparse: true
},
catagory: {
type: String,
default: ''
},
content: {
type: String
},
date_entered: {
type: Date,
default: Date.now
},
status: {
type: Number
},
comments: [Comments],
tags: [Tags]

}));

我对这种类型的数据库有点陌生,我习惯了 LAMP 堆栈上的 MySQL。

基本上我的问题如下:

  • 将内容作者与用户相关联的最佳方式是什么?数据库?
  • 此外,创建标签和类别的最佳方式是什么?

在 MYSQL 中,我们将有一个标签表和一个类别表,并通过键进行关联,我不确定在 Mongo 中执行此操作的最佳和最佳方法。

感谢您的宝贵时间!!

最佳答案

关于 Mongo 的一些想法:

  • 关联用户的最佳方式是电子邮件地址 - 作为内容/评论文档的属性 - 电子邮件通常是可靠的唯一 key 。 MongoDB 没有外键或关联的约束。不过这样也好。
  • 如果您有注册政策,请将用户名、电子邮件地址和其他详细信息添加到用户集合中。然后使用用户名和电子邮件对内容文档进行反规范化。如果出于任何原因,用户更改了名称,您将必须更新所有相关内容/评论。但只要文档中存在电子邮件地址,这应该很容易。
  • 标签和类别最好建模为内容文档中的两个列表,恕我直言。
  • 如果需要,您还可以针对这些属性创建两个索引。取决于您想要提供的访问模式和 UI 功能
  • 您还可以添加一个在内容集合中保留标签列表和类别列表的文档,并使用 $addToSet 向该文档添加新标签和类别。然后,您可以显示一个以当前标签为起点的组合框。
  • 最后一点,请考虑您计划访问数据的方式,然后相应地设计文档、集合和索引
  • [2011 年 12 月 9 日更新] 在 MongoSv 工作时,Eliot(CTO 10gen)提出了与此问题相关的模式:每天使用一个评论文档,而不是每个用户一个评论文档(可能会变得很大) _id = -YYYYMMDD 甚至每月一次,具体取决于评论的频率。这可以优化索引创建/文档增长与文档扩散(如果设计中每个用户只有一条评论)。

关于mongodb - Node.js - Mongoose/MongoDB - 模型架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8441032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com