2015-09-25 7 views
5

MysqlASと同じように、返されたプロパティを返そうとしています。しかし、名前が変更されたオブジェクトプロパティ。人口の名前を返す戻り値Mongoose

クエリ

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

それでは、どのように私は欲求を得ることができますd結果?

+0

。それ以外の場合は、基本オブジェクトに返されたmongooseドキュメントを変換し、新しいキーを作成し、データをコピーしてから古いキーを削除する必要があります。あなたが望むものだけをあなたに伝えることは、あなたの最終結果のために行うもっとも論理的なことです。 –

答えて

0

あなたは集約を使用して、この

db.colleaction.aggregate([のように出力フィールドを操作することができます{$プロジェクト:{_ ID:0、自宅: "$のhome_id"、離れて: "$のaway_id"}} ])

+0

私はこれがどこにあるのが好きですRohit :)しかし、私は私の例でこれを使うことができます –

+0

サンプルドキュメントを共有できますか、 "$ project" –

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" 
} 

ちょうどあなたの唯一の目的は、関連するオブジェクトとそれを埋めるためにあると思われるので、そもそも「ホーム」、それらをcaliingと「離れ」についてどのように

入力

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

出力

{ 
    "_id": "sD95OhsGrWVIqmTLVeuQdkna", 
    "leagueID": 1000, 
    "home": { 
     "_id": "404d1d9f68c3bb386b50f440", 
     "name": "Home" 
    } 
    "away": { 
     "_id": "504d1d9f68c3bb386b50f450", 
     "name": "Away" 
    } 
} 
関連する問題