MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Czy można uzyskać pola w kolejności projekcji w Ramach agregacji mongo?

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 }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nie znaleziono klasy „MongoDB\Driver\Manager”

  2. Wykonywanie zapytań o elementy tablicy za pomocą Mongo

  3. Jak w ciągu tygodnia napisałem aplikację z listą przebojów za pomocą Realm i SwiftUI?

  4. Błąd:queryTxt ETIMEOUT podczas łączenia się z MongoDb Atlas przy użyciu Mongoose

  5. MongoDB:Jak zdefiniować schemat?