我这样做的方式是像这样构建每条评论:
{
parent: _id,
ancestors: [_id, _id]
}
其中 parent 是直接父级,祖先是祖先链上方的每个父级注释。第一个祖先不应该是评论(帖子)
因此,假设您有如下注释 1.2:
comment = {
_id: _id,
parent: OP._id,
ancestors: [OP._id]
}
孩子们:
db.comments.find({
'parent': comment._id,
})
孙子:
db.comments.find({
'ancestors.1': comment._id,
'ancestors': {
$size: 3
}
})
所有后代:
db.comments.find({
'ancestors.1': comment._id
})
然后对于索引,您可以执行parent
, ancestors.1
, 并且说ancestors.6
创建评论
这是一个关于如何创建评论的简化示例
function Comment(parent) {
this.parent = parent._id
this.ancestors = (parent.ancestors || []).concat(parent._id)
}
var comment = new Comment(originalPost)
var child = new Comment(comment)
var grandchild = new Comment(child)