MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB में खोज/प्रक्षेपण करते समय मैं फ़ील्ड का नाम कैसे बदलूं?

तो मूल रूप से .aggregate() . का उपयोग कर रहे हैं इसके बजाय .find() :

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

और यह आपको वह परिणाम देता है जो आप चाहते हैं।

MongoDB 2.6 और इसके बाद के संस्करण एक "कर्सर" लौटाते हैं जैसे कि खोज करता है।

देखें $project और अधिक विवरण के लिए अन्य एकत्रीकरण फ्रेमवर्क ऑपरेटर।

अधिकांश मामलों के लिए आपको बस .find() . से लौटाए गए फ़ील्ड का नाम बदलना चाहिए कर्सर को संसाधित करते समय। उदाहरण के तौर पर जावास्क्रिप्ट के लिए, आप .map() . का उपयोग कर सकते हैं ऐसा करने के लिए।

खोल से:

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

या अधिक इनलाइन:

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

यह सर्वर पर किसी भी अतिरिक्त ओवरहेड से बचा जाता है और ऐसे मामलों में उपयोग किया जाना चाहिए जहां अतिरिक्त प्रोसेसिंग ओवरहेड पुनर्प्राप्त डेटा के आकार में वास्तविक कमी के लाभ से अधिक होगा। इस मामले में (और अधिकांश) यह न्यूनतम होगा और इसलिए कर्सर परिणाम को पुन:संसाधित करने के लिए बेहतर होगा।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मैं Mongo में NOT IN क्वेरी कैसे करूँ?

  2. MongoDB या CouchDB - उत्पादन के लिए उपयुक्त है?

  3. नोड.जेएस से मोंगोडब से कनेक्ट करते समय ECONNREFUSED त्रुटि

  4. मोंगोडीबी ड्रॉपइंडेक्स ()

  5. आप MongoDB में ऑटो-इंक्रिमेंटिंग प्राथमिक आईडी कैसे कार्यान्वित करते हैं?