我有这样的comment
收藏
{
_id: 'c1',
text: 'comment 1',
votes: 1,
replies: [
{
_id: 'r1',
text: 'reply 1',
isReply: true,
votes: 3
},
{
_id: 'r2',
text: 'reply 2',
isReply: true,
votes: 0
}
]
},
{
_id: 'c2',
text: 'comment2',
votes: 2,
replies: []
}
这个想法是一个评论可以有很多回复。所有评论和回复都有id , text , votes。我怎样才能获得最好的 2 条评论或获得最多票数的回复。在给定的情况下,这将是“回复 1”和“评论 2”。
我可以向 mongodb 发送 1 个请求以获得最好的 2 个评论,另一个请求获得最好的 2 个回复,然后比较它们以获得我想要的。
但是,只有 1 个对 mongodb 的请求是否有可能,我可以得到这样的结果?
[
{
_id: 'r1',
text: 'reply 1',
isReply: true,
votes: 3
},
{
_id: 'c2',
text: 'comment 2',
votes: 2
}
]
或者更好的是,我可以将评论/回复展平以得到按排序的评论或回复列表votes
?在这种情况下,它将是 [r1, c2, c1, r2] 分别具有它们的属性
谢谢。
更新:我试过aggregate({$unwind: '$replies'})
了,但我仍然有 2 个不同级别的评论和回复,我无法通过使用聚合框架进行比较。也许有办法使这两个级别变平,我对 mongodb 很陌生。