Я пытаюсь упорядочить некоторые данные и хочу получить точное совпадение в качестве первых результатов, а затем остальных.
Я пытался использовать этот $ eq in $ project, но, похоже, что-то не получитсяработа.
Можно ли сделать что-то подобное?
db.getCollection('words').aggregate([
{ $match: { "kanji.text": /^彼/ } },
{ $project: {
"kanji": 1,
"kana": 1,
"sense":1,
"exact": {
$eq : [ "$kanji.0.text", "彼" ]
}
}
},
{ $sort: {"exact": 1} }
])
Структура документа:
РЕДАКТИРОВАТЬ: У меня естьнашел плохой обходной путь
db.getCollection('words').aggregate([
{ $match: { "kanji.text": /^彼/ } },
{ $limit : 10 },
{ $addFields: {
exact: {
$filter: {
input: '$kanji.text',
cond: {
$eq: ['$$this', "彼"]
}
}
}
}},
{ $project: {
"kanji": 1,
"kana": 1,
"sense":1,
"exact": 1
}
},
{ $sort: {"exact.0": -1} }
])