sql >> Database >  >> NoSQL >> MongoDB

Hoe hernoem ik velden bij het uitvoeren van zoeken/projecteren in MongoDB?

Dus eigenlijk met behulp van .aggregate() in plaats van .find() :

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

En dat geeft je het resultaat dat je wilt.

MongoDB 2.6 en hoger versies retourneren een "cursor" net zoals vinden doet.

Zie $project en andere aggregatieframework-operators voor meer details.

In de meeste gevallen moet u de velden gewoon hernoemen zoals geretourneerd door .find() bij het verwerken van de cursor. Voor JavaScript kunt u als voorbeeld .map() . gebruiken om dit te doen.

Uit de schaal:

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

Of meer inline:

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

Dit voorkomt extra overhead op de server en moet worden gebruikt in gevallen waarin de extra verwerkingsoverhead opweegt tegen de winst van de daadwerkelijke vermindering van de grootte van de opgehaalde gegevens. In dit geval (en de meeste) zou het minimaal en daarom beter zijn om het cursorresultaat opnieuw te verwerken om te herstructureren.



  1. Honderden tellers tegelijk verhogen, redis of mongodb?

  2. Mongoimport van JSON-bestand

  3. Unieke score voor redis leaderboard

  4. Cloudera Impala:realtime zoekopdrachten in Apache Hadoop, echt