これを行うための簡単な方法はないと思います。本当に必要な場合は、$cond
を試してください。 特定のフィールドの状態をチェックする演算子
- 新しいフィールド
matchResult
を追加します$project
でcreatedBy
をチェックします リターン1と一致しています。それ以外の場合は0です。 -
$sort
matchResult
による 降順
const [messages, messageCount] = await Promise.all([
MessageModel.aggregate([
{ $match: params },
{
$project: {
...filterObject,
matchResult: {
$cond: [
{ $eq: ["$createdBy", ObjectId("abcff9ef71fa048cea3c8a97")] },
1,
0
]
}
}
},
{ $sort: { matchResult: -1 } },
{ $skip: ctx.paginate.skip },
{ $limit: ctx.query.limit }
]),
MessageModel.countDocuments(params),
]);
2番目のオプションは