2015-09-25 5 views
5

मैं Mysql के AS में लौटाई गई संपत्तियों को वापस करने की कोशिश कर रहा हूं। लेकिन नामित वस्तु गुणों के साथ।नामित मूल्यों का नाम बदलना मोंगोस

क्वेरी

Games.find({leagueID:leagueID, result:{$ne: null}}).populate('home_id away_id').sort({date: -1}).execAsync() 

आउटपुट

{ 
    home_id: { 
     ...some details 
    }, 
    away_id: { 
     ...some details 
    } 
} 

वांछित आउटपुट

{ 
    home: { 
     ...some details 
    }, 
    away: { 
     ...some details 
    } 
} 

तो मैं कैसे इच्छा प्राप्त कर सकते हैं डी परिणाम?

+0

कैसे सिर्फ उन्हें "घर" और "दूर" caliing अपने ही इरादे को भरने के लिए है कि संबंधित वस्तु के साथ हो रहा है के बाद से के साथ शुरू करने के बारे में। अन्यथा आपको मूल रूप से मानक ऑब्जेक्ट्स में लौटाए गए मोंगोज़ दस्तावेज़ों को बदलने, नई कुंजी बनाने, डेटा कॉपी करने, फिर पुरानी कुंजी को हटाने की आवश्यकता होती है। ऐसा लगता है कि जो आप चाहते हैं उन्हें सिर्फ नामित करें अपने अंतिम परिणाम के लिए सबसे तार्किक बात है। –

उत्तर

0

आप एकत्रीकरण का उपयोग करें और इस

db.colleaction.aggregate ([जैसे उत्पादन क्षेत्र में हेरफेर कर सकते हैं {$ परियोजना: {_ आईडी: 0, घर: "$ home_id", दूर: "$ away_id"}} ])

+0

मुझे यह पसंद है कि यह रोहित जा रहा है :) लेकिन मैं अपने उदाहरण में इसका उपयोग कैसे कर सकता हूं –

+0

क्या आप नमूना दस्तावेज़ साझा कर सकते हैं या आप "$ $" द्वारा "$ match" का पालन कर सकते हैं –

0

मेरा समाधान ट्रांसफॉर्म फ़ंक्शन का उपयोग करना है।

GamesSchema.set('toJSON', { 
    transform: function(doc, ret, options) { 
     if (mongoose.Types.ObjectId.isValid(ret.home)) { 
      ret.homeId = ret.home; 
      delete ret.home; 
     } 
     if (mongoose.Types.ObjectId.isValid(ret.away)) { 
      ret.awayId = ret.away; 
      delete ret.away; 
     } 
    } 
}); 

रूप से भरें बिना:

इनपुट

{ 
    "_id": "sD95OhsGrWVIqmTLVeuQdkna", 
    "leagueID": 1000, 
    "home": "404d1d9f68c3bb386b50f440" // ObjectId 
    "away": "504d1d9f68c3bb386b50f450" // ObjectId 
} 

आउटपुट

{ 
    "_id": "sD95OhsGrWVIqmTLVeuQdkna", 
    "leagueID": 1000, 
    "homeId": "404d1d9f68c3bb386b50f440" 
    "awayId": "504d1d9f68c3bb386b50f450" 
} 

रूप से भरें के साथ:

इनपुट

{ 
    "_id": "sD95OhsGrWVIqmTLVeuQdkna", 
    "leagueID": 1000, 
    "home": "404d1d9f68c3bb386b50f440" // ObjectId 
    "away": "504d1d9f68c3bb386b50f450" // ObjectId 
} 

आउटपुट

{ 
    "_id": "sD95OhsGrWVIqmTLVeuQdkna", 
    "leagueID": 1000, 
    "home": { 
     "_id": "404d1d9f68c3bb386b50f440", 
     "name": "Home" 
    } 
    "away": { 
     "_id": "504d1d9f68c3bb386b50f450", 
     "name": "Away" 
    } 
} 
संबंधित मुद्दे