MongoDB 中单个父注释中的嵌套(子)注释
Posted
技术标签:
【中文标题】MongoDB 中单个父注释中的嵌套(子)注释【英文标题】:Nested (children) comments within a single parent comment in MongoDB 【发布时间】:2013-05-18 09:50:23 【问题描述】:问题:我是否将我的子 cmets 嵌套在单个父评论中?
概述:
创建评论系统
评论可以有孩子
现在,每个评论子项或父项都作为一条记录存储在名为 SubmissionCommentsSchema
的集合中
子 cmets 的键 => 值为 parent_id
=> Object ID
,其中 Object ID
引用具有 parent_id
或 null
的父评论。
架构如下:
SubmissionCommentsSchema = new Schema(
id : Schema.ObjectId,
submission_id :
type: String
,
parent_id :
type: String,
default: null
,
comment :
type: String,
required: true
,
user_id:
type: String,
required: true
,
username :
type: String,
required: true
,
created :
type: Date,
default: Date.now
,
reply :
type: Boolean,
default: false,
required: true
,
deleted :
type: Boolean,
default: false
);
父评论示例:
submission_id: '51899313634afe0000000051',
comment: 'asdfadsf',
user_id: '516e173f48670b44d20004dc',
username: 'bobcobb',
_id: 51899338634afe0000000055,
deleted: false,
reply: false,
created: Tue May 07 2013 16:50:16 GMT-0700 (PDT),
parent_id: null ,
引用上述父评论的子评论示例:
submission_id: '51899313634afe0000000051',
comment: 'Testing one two four',
user_id: '516b45f8ac6a1b488e000001',
username: 'testing',
_id: 519d93a83867470000000146,
deleted: false,
reply: false,
created: Wed May 22 2013 20:57:28 GMT-0700 (PDT),
parent_id: '51899338634afe0000000055' ,
在将这些提供给视图时,我将它们全部拉回并循环查看它们以查看哪些具有 parent_id
s !== null
。如果是这样,那么我将它们放在一个列表中并将它们附加到父评论中,然后将它们转储到视图中。
我是否应该将原始父注释中的子 cmets 存储为嵌套数组?
【问题讨论】:
嗨,鲍勃,你最后用的是什么? @ParagJadhav 我最终将 Sequelize.js 与 Postgres 一起使用。 【参考方案1】:可能不会,因为如果特定线程收到许多回复,您很可能会超出文档大小限制。
但是,您可能想要做的是向 cmets 添加一个整数 depth
字段,这样您就可以轻松地获取前 2 个级别,显示它们,然后仅在用户展开评论树时加载后续级别.
有时还值得维护一组祖先 ID,这样您就可以快速获取任何子树,或者提供指向特定评论的深层链接可以快速找出您需要在其“上方”加载哪些 cmets 以显示包含它的最小扩展评论树。
【讨论】:
嗯,很有趣。即使他们将(仅)深层次,我也应该这样做吗?家长 > 孩子 |孩子|孩子|孩子 如果它们永远只有一层,那么你就不需要祖先数组或深度,如果你能保证只有一小部分,那么你可以继续并嵌入它们,当然。以上是关于MongoDB 中单个父注释中的嵌套(子)注释的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB - 仅当嵌套数组中的所有条目存在时才更新它们