sql >> Database teknologi >  >> NoSQL >> MongoDB

Sorter vare efter værdi mongodb

Dette som et generelt begreb kaldes "vægtning". Så uden nogen anden mekanisme på plads, så håndterer du dette logisk i en MongoDB-forespørgsel ved at "projicere" værdierne for "vægten" logisk ind i dokumentet.

Din metode til at "projicere" og ændre felterne i dit dokument er .aggregate() metode, og specifikt er det $project pipeline fase:

db.collection.aggregate([
    { "$project": {
        "getthisfirst": 1,
        "weight": {
            "$cond": [
                { "$eq": [ "$getthisfirst", "yes" ] },
                10,
                { "$cond": [
                    { "$eq": [ "$getthisfirst", "maybe" ] },
                    5,
                    0
                ]}
            ]
        }
    }},
    { "$sort": { "weight": -1 } }
]);

$cond operatør her er en "ternær" ( if/then/else ) betingelse, hvor det første argument er et betinget udsagn, der kommer til boolsk true|false . Hvis true "så" returneres det andet argument som resultatet, ellers returneres "andet" eller det tredje argument som svar.

I dette "indlejrede" tilfælde, hvor "ja" er et match, så tildeles en bestemt "vægt"-score, ellers går vi videre til den næste tilstandstest, hvor når "måske" er et match, så tildeles en anden score, eller ellers er scoren 0 da vi kun har tre muligheder at matche.

Derefter $sort betingelse anvendes for at "ordne" (i faldende rækkefølge) resultaterne med den største "vægt" ovenpå.




  1. Nøjagtighed af redis dbsize kommando

  2. MongoDB:Bruger match med inputdokumentvariabler

  3. Intervalleunderstøttelse over tid bucketed analytics

  4. java mongo db regulære udtryk ikke-bogstavstegn