sql >> Databasteknik >  >> NoSQL >> MongoDB

Sortering av frågeresultat efter ordningen på objekt i tillhandahållen villkorsarray i Mongoose

Med tanke på följande data:

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

du kan använda Aggregation Frameworks $match för att filtrera bort alla objekt som inte finns i angiven array och $addFields med $indexOfArray för att hämta index fast egendom. Sedan kan du $sort av den egenskapen och använd $project för att ta bort tillfälligt fält. Försök:

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

Utgångar:

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



  1. Ange Mongo-frågeparametrar från klientkontrollern (MEAN.JS)

  2. Mongodb php få id för nytt dokument?

  3. Inuti Santanders nästan realtidsdataintagsarkitektur (del 2)

  4. Dela upp strängen i en array av delsträngar eller tecken i MongoDB