मुझे नहीं लगता कि ऐसा करने का कोई सीधा तरीका है, यदि आप वास्तव में चाहते हैं तो $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),
]);
दूसरा विकल्प है $regexMatch MongoDB v4.2 से शुरू होने वाला एग्रीगेशन ऑपरेटर,