2015-09-25 8 views
5

Sto tentando di restituire le proprietà restituite, proprio come in Mysql's AS. Ma con proprietà oggetto rinominate.Rinomina popola i valori restituiti Mangusta

Query

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

uscita

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

output desiderato

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

Così come posso ottenere il desiderio d esito?

+0

Come circa appena caliing loro "casa" e "via" per cominciare dal tuo unico intento sembra essere per popolare che, con il relativo oggetto. In caso contrario, è necessario convertire i documenti della mangusta restituiti agli oggetti standard, creare nuove chiavi, copiare i dati, quindi rimuovere le vecchie chiavi. Sembra che solo naminng loro quello che vuoi sia la cosa più logica da fare per il tuo risultato finale. –

risposta

0

È possibile utilizzare l'aggregazione e manipolare il campo di output come questo

db.colleaction.aggregate ([{$ progetto: {_ id: 0, a casa: "$ home_id", via: "$ away_id"}} ])

+0

Mi piace dove sta andando Rohit :) Ma come posso usarlo nel mio esempio –

+0

Puoi condividere il documento di esempio o puoi provare il "$ match" seguito dal "$ project" –

0

La mia soluzione è utilizzare la funzione di trasformazione.

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; 
     } 
    } 
}); 

Senza popolano:

ingresso

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

uscita

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

Con popolano:

ingresso

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

uscita

{ 
    "_id": "sD95OhsGrWVIqmTLVeuQdkna", 
    "leagueID": 1000, 
    "home": { 
     "_id": "404d1d9f68c3bb386b50f440", 
     "name": "Home" 
    } 
    "away": { 
     "_id": "504d1d9f68c3bb386b50f450", 
     "name": "Away" 
    } 
} 
Problemi correlati