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

Řazení výsledků dotazu podle pořadí položek v zadaném poli podmínek v Mongoose

S ohledem na následující údaje:

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

můžete použít Aggregation Framework $match odfiltrovat všechny položky, které nejsou přítomny v zadaném poli a $addFields s $indexOfArray získat index vlastnictví. Pak můžete $sort pomocí této vlastnosti a použít $project k odstranění dočasného pole. Zkuste:

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

Výstupy:

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



  1. Vlastní kaskádování v Spring Data MongoDB

  2. Přesuňte prvek z jednoho pole do druhého v rámci stejného dokumentu MongoDB

  3. Mongodb Vyhledávání sharding klíče je velmi pomalé

  4. Jednoduchý příklad StackExchange.Redis C#