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

Sortering af forespørgselsresultater efter rækkefølgen af ​​varer i det angivne vilkårsarray i Mongoose

I betragtning af følgende data:

db.col.save({ a: "111"})
db.col.save({ a: "112"})
db.col.save({ a: "113"})
db.col.save({ a: "114"})

du kan bruge Aggregation Frameworks $match at bortfiltrere alle de elementer, der ikke er til stede i det specificerede array og $addFields med $indexOfArray for at få index ejendom. Så kan du $sort af den pågældende ejendom og brug $project for at fjerne midlertidigt felt. Prøv:

db.col.aggregate([
    {
        $match: { a: { $in: ["112", "111", "113"] } }
    },
    {
        $addFields: {
            index: { $indexOfArray: [ ["112", "111", "113"], "$a" ] }
        }
    },
    {
        $sort: { index: 1 }
    },
    {
        $project: { index: 0, _id: 0 }
    }
])

Udgange:

{ "a" : "112" }
{ "a" : "111" }
{ "a" : "113" }



  1. Inkluder alle eksisterende felter og tilføj nye felter til dokumentet

  2. Spil:Sådan transformerer du JSON, mens du skriver/læser det til/fra MongoDB

  3. Understøtter Spring Data MongoDB MongoDB 3.4-sorteringsfunktionen?

  4. Sådan bruges NOT IN array condition inde i mongodb $lookup aggregat