sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo almacenar una matriz ordenada en MongoDB?

La versión 2.4 de MongoDB proporciona otra opción aquí, que es mantener el campo de la matriz en orden a medida que lo actualiza usando $sort modificador.

db.collection.update({_id: document_id}, {
    $push: {
        myarray: {
            $each: [{timestamp: 456, x: 1}, {timestamp: 123, x: 2}, ...],
            $sort: {timestamp: 1}
        }
    }
});

Esto dará como resultado los elementos de myarray campo del documento actualizado que se almacenará ordenado de forma ascendente timestamp .

Si solo desea ordenar los elementos existentes en su lugar sin agregar elementos nuevos, use $each: [] :

db.collection.update({_id: document_id}, {
    $push: {
        myarray: {
            $each: [],
            $sort: {timestamp: 1}
        }
    }
});