sql >> Databáze >  >> NoSQL >> MongoDB

Jak provést objednávku podle hodnoty v MongoDB?

Musíte $project "váha" pro každou hodnotu v pořadí podle MongoDB, a to znamená .aggregate() metoda:

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 } }
])

Vnořené použití ternárního $cond umožňuje, aby každá položka pro "stav" byla považována za uspořádanou hodnotu "váhy" v pořadí uvedených argumentů.

To je zase přiváděno do $sort , kde projektovaná hodnota ( "váha" ) se používá k řazení výsledků podle skóre váženého párování.

Tímto způsobem je tedy upřednostněno pořadí "stavových" shod podle toho, která se v seřazených výsledcích objeví jako první.



  1. Jak mohu uložit denní dobu v MongoDB? Jako struna? Uveďte libovolný rok/měsíc/den?

  2. Import json ze souboru do mongodb pomocí mongoimport

  3. Mongoose.js vytvoří několik připojení k MongoDB z jednoho volání connect().

  4. Mongo převede všechna číselná pole, která jsou uložena jako řetězec