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

É possível obter os campos na ordem de projeção em Aggregation Frameworks mongo


O MongoDB por padrão retorna os campos na ordem de sua inserção.

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

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

como você pode ver no segundo registro, seus campos estão na ordem em que inserimos. No entanto, podemos fazer um truque para colocá-los na ordem desejada renomeando os campos.

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

a consulta acima retornará
{ "_id" : 3, "_midterm" : 70, "_final" : 78 }
{ "_id" : 2, "_midterm" : 60, "_final" : 55 }
{ "_id" : 1, "_midterm" : 70 }

aqui o meio termo é o primeiro e o final é o segundo com uma exceção. nomes de campos são prefixados com _ . se você quiser nomes originais, você pode project novamente.
db.students.aggregate(
[
{ "$project": {  _midterm:"$midterm","_final": "$final"}},
{ "$project": {  midterm:"$_midterm","final": "$_final"}}
])

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