MongoDB集合按评分及数组内最新评论日期排序问题
完善MongoDB查询的排序逻辑
嘿,我来帮你搞定这个排序逻辑的补充!你已经完成了第一步的筛选和基础排序,现在只需要在sort里多加一个规则,就能实现评分相同时按评论数组最后一条的日期排序啦。
在MongoDB里,要直接定位数组的最后一个元素,咱们可以用数组字段名.-1.子字段的写法,这样就能精准拿到最后一条评论的日期字段。
给你整理好的完整查询语句:
db.getCollection('resources').find({ 'skills.name': { $all: ["Java", "Python"] } }).sort({ 'status.rating': -1, // 先按评分从高到低排 'comments.-1.date': -1 // 评分一样时,按最后一条评论的日期从新到旧排 })
小提示:
- 要是你的评论数组不叫
comments,或者日期字段不是date,记得替换成你实际用的字段名哦。 - 如果想让评分相同的时候按最后一条评论的日期从旧到新排,把
'comments.-1.date'后面的-1改成1就行。 - 这个写法适用于MongoDB 3.2及以上版本,现在大部分项目用的都是新环境,应该没问题;要是你用的是特别老的版本,可能得改用聚合管道来处理,但这种情况很少见啦。
内容的提问来源于stack exchange,提问作者Miriam
相关产品推荐
相关产品推荐

