MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Est-il possible d'obtenir les champs dans l'ordre de projection dans Aggregation Frameworks mongo

MongoDB renvoie par défaut les champs dans l'ordre de leur insertion.

ex.

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

reviendra

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

comme vous pouvez le voir deuxième enregistrement, ses champs sont dans l'ordre dans lequel nous avons inséré. Cependant, nous pouvons jouer un tour pour les obtenir dans l'ordre que vous voulez en renommant les champs.

ex.

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

la requête ci-dessus renverra

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

ici, la mi-session est la première et la finale est la deuxième à une exception près. les noms des champs sont préfixés par _ . si vous voulez des noms originaux, vous pouvez project à nouveau.

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

et il reviendra

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