MongoDB domyślnie zwraca pola w kolejności ich wstawiania.
np.
db.students.aggregate([ { "$project": { "midterm": 1,"final": 1 } } ])
powróci
{ "_id" : 3, "final" : 78, "midterm" : 70 }
{ "_id" : 2, "midterm" : 60, "final" : 55 }
{ "_id" : 1, "midterm" : 70 }
jak widać drugi rekord, jego pola są w kolejności, w jakiej wstawiliśmy. Możemy jednak wykonać sztuczkę, aby uzyskać ich kolejność, zmieniając nazwy pól.
np.
db.students.aggregate([ { "$project": { _midterm:"$midterm","_final": "$final"}}])
powyższe zapytanie zwróci
{ "_id" : 3, "_midterm" : 70, "_final" : 78 }
{ "_id" : 2, "_midterm" : 60, "_final" : 55 }
{ "_id" : 1, "_midterm" : 70 }
tutaj semestr jest pierwszy, a ostatni drugi, z jednym wyjątkiem. nazwy pól są poprzedzone _
. jeśli chcesz oryginalne nazwy, możesz project
ponownie.
db.students.aggregate(
[
{ "$project": { _midterm:"$midterm","_final": "$final"}},
{ "$project": { midterm:"$_midterm","final": "$_final"}}
])
i wróci
{ "_id" : 3, "midterm" : 70, "final" : 78 }
{ "_id" : 2, "midterm" : 60, "final" : 55 }
{ "_id" : 1, "midterm" : 70 }