我有一个集合:
{
_id - ObjectId
"post_title": "first post",
"post_date: 123456,
"comments" [
{
"comment_title": "test",
"comment_time": 123456
},
{
"comment_title": "test2",
"comment_time": 1234567
}
]
},
{
_id - ObjectId
"post_title": "second post",
"post_date: 1234567,
"comments" [
{
"comment_title": "test3",
"comment_time": 12345678
},
{
"comment_title": "test4",
"comment_time": 123456789
}
]
}
现在,我希望通过降序获得订单上的所有评论,无论帖子如何。只想按降序列出所有评论。我不确定它是否可能使用单个MongoDB查询,因此不会将任何内容作为我的尝试。
任何帮助都非常感激。
答案 0 :(得分:0)
要按降序comment_time
排序,请使用以下聚合:
db.device.aggregate([
{$unwind: "$comments"},
{$sort: {"comments.comment_time":-1}},
{$group: {_id:"$_id", comments: {$push:"$comments"}}}
]);
执行:
$unwind
您的评论数组$sort
comments.comment_time
降序(-1)$group
使用已排序的值答案 1 :(得分:0)
如果您只需要按时间降序排列评论列表
db.posts.aggregate([
{$unwind: "$comments"},
{$project: { "title": "$comments.comment_title", "time": "$comments.comment_time"}},
{$sort: { "time": -1 }}
])