MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Classificando os resultados da consulta pela ordem dos itens na matriz de condições fornecidas no Mongoose


Considerando os seguintes dados:
db.col.save({ a: "111"})
db.col.save({ a: "112"})
db.col.save({ a: "113"})
db.col.save({ a: "114"})

você pode usar o $match do Aggregation Framework para filtrar todos os itens que não estão presentes na matriz especificada e o $addFields com $indexOfArray para obter o index propriedade. Então você pode $sort por essa propriedade e use $project para remover o campo temporário. Tentar:
db.col.aggregate([
    {
        $match: { a: { $in: ["112", "111", "113"] } }
    },
    {
        $addFields: {
            index: { $indexOfArray: [ ["112", "111", "113"], "$a" ] }
        }
    },
    {
        $sort: { index: 1 }
    },
    {
        $project: { index: 0, _id: 0 }
    }
])

Saídas:
{ "a" : "112" }
{ "a" : "111" }
{ "a" : "113" }