我有一个像这样的
或者,我可以将评论/回复展平为按
谢谢。
更新: 我尝试了
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。如何获取最多votes的前两个评论或回复。在给定的情况下,这将是“回复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非常陌生。