MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

È possibile ottenere i campi nell'ordine di proiezione in Aggregation Frameworks mongo

MongoDB di default restituisce i campi in ordine di inserimento.

es.

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

tornerà

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

come puoi vedere secondo record, i suoi campi sono nell'ordine in cui abbiamo inserito. Tuttavia, possiamo giocare un trucco per metterli nell'ordine desiderato rinominando i campi.

es.

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

la query precedente verrà restituita

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

qui midterm è il primo e l'ultimo è il secondo con un'eccezione. i nomi dei campi sono preceduti da _ . se vuoi nomi originali, puoi project di nuovo.

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

e tornerà

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