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

Como armazenar array classificado de volta ao MongoDB?


A versão 2.4 do MongoDB oferece outra opção aqui, que é manter o campo array em ordem conforme você o atualiza usando o $sort modificador.
db.collection.update({_id: document_id}, {
    $push: {
        myarray: {
            $each: [{timestamp: 456, x: 1}, {timestamp: 123, x: 2}, ...],
            $sort: {timestamp: 1}
        }
    }
});

Isso resultará nos elementos do myarray campo do documento atualizado a ser armazenado ordenado por timestamp crescente .

Se você quiser apenas ordenar os elementos existentes sem adicionar novos, use $each: [] :
db.collection.update({_id: document_id}, {
    $push: {
        myarray: {
            $each: [],
            $sort: {timestamp: 1}
        }
    }
});