$project
する必要があります MongoDB用語での各値の「重み」。これは、.aggregate()
を意味します。 方法:
db.users.aggregate([
{ "$project": {
"status": 1,
"a_field": 1,
"another_field": 1,
"pretty_much_every_field": 1,
"weight": {
"$cond": [
{ "$eq": [ "$status", "A" ] },
10,
{ "$cond": [
{ "$eq": [ "$status", "B" ] },
8,
{ "$cond": [
{ "$eq": [ "$status", "C" ] },
6,
{ "$cond": [
{ "$eq": [ "$status", "D" ] },
4,
0
]}
]}
]}
]
}
}},
{ "$sort": { "weight": -1 } }
])
三元$cond
のネストされた使用 「ステータス」の各項目を、指定された引数の順序で並べられた「重み」値と見なすことができます。
これは順番に$sort
に送られます 、ここで、予測値(「重み」)は、重み付きマッチングによってスコア付けされた結果を並べ替えるために使用されます。
したがって、このようにして、ソートされた結果で最初に表示される「ステータス」一致の順序が優先されます。