重命名填充返回的值Mongoose
我试图返回返回的属性,很像在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 } }
那么我怎样才能得到理想的结果?
您可以使用聚合并像这样操作输出字段
db.colleaction.aggregate([{$项目:{_ ID:0,主场: “$ HOME_ID”,走 “$ away_id”}}])
我的解决scheme是使用转换function。
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; } } });
没有填充:
input
{ "_id": "sD95OhsGrWVIqmTLVeuQdkna", "leagueID": 1000, "home": "404d1d9f68c3bb386b50f440" // ObjectId "away": "504d1d9f68c3bb386b50f450" // ObjectId }
产量
{ "_id": "sD95OhsGrWVIqmTLVeuQdkna", "leagueID": 1000, "homeId": "404d1d9f68c3bb386b50f440" "awayId": "504d1d9f68c3bb386b50f450" }
随着填充:
input
{ "_id": "sD95OhsGrWVIqmTLVeuQdkna", "leagueID": 1000, "home": "404d1d9f68c3bb386b50f440" // ObjectId "away": "504d1d9f68c3bb386b50f450" // ObjectId }
产量
{ "_id": "sD95OhsGrWVIqmTLVeuQdkna", "leagueID": 1000, "home": { "_id": "404d1d9f68c3bb386b50f440", "name": "Home" } "away": { "_id": "504d1d9f68c3bb386b50f450", "name": "Away" } }