我有一条记录,我想在发送到前端之前对其进行排序。
db.getCollection('users').find({$or:
[
{createdBy: 'abhi'},
{createdBy: {'$ne': 'abhi'}, visibility: 'public'}
]}).sort({'createdBy': 1})
我想先对 createdBy 用户 abhi 的所有记录进行排序,然后再对其他用户进行排序。
类似:
.sort({'createdBy == abhi': 1})
答案 0 :(得分:1)
您可以使用聚合来实现这一目标。
first: true
为createdBy
其他abhi
first: false
{first:-1, createdBy:1}
排序,将标记的字段放在排序列表中first
代码:
db.users.aggregate([
{$project:
{
first:
{
$cond: { if: { "$eq": ["$createdBy", 'abhi' ]}, then: true, else: false }
},
createdBy: '$createdBy'
}
},
{$sort: {first:-1, "createdBy": 1}},
{$project:
{
createdBy: 1
// Don't include first:1
}
}
])