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

Jak zmienić nazwy pól podczas wyszukiwania/rzutowania w MongoDB?

Więc w zasadzie używając .aggregate() zamiast .find() :

db.tweets.aggregate([
    { "$project": {
        "_id": 0,
        "coords": "$level1.level2.coordinates"
    }}
])

A to daje pożądany rezultat.

MongoDB 2.6 i nowsze wersje zwracają „kursor”, tak jak robi to find.

Zobacz $project i inne operatory ram agregacji, aby uzyskać więcej informacji.

W większości przypadków należy po prostu zmienić nazwy pól zwrócone z .find() podczas przetwarzania kursora. W przypadku JavaScript jako przykładu możesz użyć .map() aby to zrobić.

Z powłoki:

db.tweets.find({},{'level1.level2.coordinates': 1, _id:0}).map( doc => {
  doc.coords = doc['level1']['level2'].coordinates;
  delete doc['level1'];
  return doc;
})

Lub więcej inline:

db.tweets.find({},{'level1.level2.coordinates': 1, _id:0}).map( doc => 
  ({ coords: doc['level1']['level2'].coordinates })
)

Pozwala to uniknąć dodatkowego obciążenia serwera i powinno być stosowane w takich przypadkach, w których dodatkowe obciążenie przetwarzania przewyższałoby korzyści wynikające z faktycznego zmniejszenia rozmiaru pobieranych danych. W tym przypadku (i większości) byłoby to minimalne i dlatego lepiej przetworzyć wynik kursora w celu restrukturyzacji.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:jak parsować datę w wersji mongoDb 3.6?

  2. MongoDB / Meteor / Eksportuj MONGO_URL do wdrożonych aplikacji

  3. Czy mogę określić, czy ciąg jest identyfikatorem obiektu MongoDB?

  4. Jak korzystać z Mongoose bez definiowania schematu?

  5. Znajdź zduplikowane rekordy w MongoDB