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

¿Es posible obtener los campos en el orden de proyección en Aggregation Frameworks mongo?

MongoDB por defecto devuelve los campos en el orden de su inserción.

por ejemplo

db.students.aggregate([  { "$project": {  "midterm": 1,"final": 1   } } ])

regresará

{ "_id" : 3, "final" : 78, "midterm" : 70 }
{ "_id" : 2, "midterm" : 60, "final" : 55 }
{ "_id" : 1, "midterm" : 70 }

como puede ver el segundo registro, sus campos están en el orden en que los insertamos. Sin embargo, podemos jugar un truco para ponerlos en el orden que desee cambiando el nombre de los campos.

por ejemplo

db.students.aggregate([  { "$project": {  _midterm:"$midterm","_final": "$final"}}])

la consulta anterior devolverá

{ "_id" : 3, "_midterm" : 70, "_final" : 78 }
{ "_id" : 2, "_midterm" : 60, "_final" : 55 }
{ "_id" : 1, "_midterm" : 70 }

aquí el examen parcial es el primero y el final es el segundo con una excepción. los nombres de los campos tienen el prefijo _ . si quieres nombres originales, puedes project de nuevo.

db.students.aggregate(
[
{ "$project": {  _midterm:"$midterm","_final": "$final"}},
{ "$project": {  midterm:"$_midterm","final": "$_final"}}
])

y volverá

{ "_id" : 3, "midterm" : 70, "final" : 78 }
{ "_id" : 2, "midterm" : 60, "final" : 55 }
{ "_id" : 1, "midterm" : 70 }