sql >> Database >  >> NoSQL >> MongoDB

Queryresultaten sorteren op volgorde van items in de array met verstrekte voorwaarden in Mongoose

Gezien de volgende gegevens:

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

u kunt Aggregation Framework's $match gebruiken om alle items te filteren die niet aanwezig zijn in de opgegeven array en de $addFields met $indexOfArray om de index . te krijgen eigendom. Dan kun je $sort door die eigenschap en gebruik $project tijdelijk veld te verwijderen. Probeer:

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

Uitgangen:

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



  1. redis time-out voor verbinding met externe server in een docker

  2. MongoDB $in met subquery

  3. Mongodb aggregatie opzoeken met voorwaarden

  4. Vind de grootste documentgrootte in MongoDB