sql >> Database >  >> NoSQL >> MongoDB

Is het mogelijk om de velden in de volgorde van projectie te krijgen in Aggregation Frameworks mongo

MongoDB retourneert standaard velden in volgorde van invoeging.

bijv.

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

zal terugkeren

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

zoals je het tweede record kunt zien, zijn de velden in de volgorde waarin we ze hebben ingevoegd. We kunnen echter een trucje uithalen om ze in de door jou gewenste volgorde te krijgen door de velden te hernoemen.

bijv.

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

bovenstaande zoekopdracht zal terugkeren

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

hier is de midterm de eerste en de laatste is de tweede met één uitzondering. veldnamen worden voorafgegaan door _ . als je originele namen wilt, kun je project nogmaals.

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

en het zal terugkeren

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


  1. MongoDB - Ontspan array met behulp van aggregatie en verwijder duplicaten

  2. Waarde retourneren van asynchrone functie node.js

  3. Redis cluster failover:slave wordt geen master

  4. Docker-compose , toch om een ​​redis.conf-bestand op te geven?