由于aggregate方法返回结果对象而不是mongoose模型,我不知道如何应用toObject()来转换结果中的字段。
但是,find()返回一个mongoose模型,toObject()根据我的要求转换字段。
任何指向更改aggregate()方法以返回mongoose模型或在aggregate()结果上调用toObject()的指针都会有所帮助。
下面的代码返回一个Mongoose模型,我可以在其上调用toObject()
return model.find(
{
loc: {
$nearSphere: {
$geometry: this.loc,
$maxDistance: radiusInKm * 1000
}
}
},
cb
);
下面的代码是聚合返回结果对象
return model.aggregate()
.near({
near: this.loc,// this.loc already has a variable of type point.
distanceField: "dist.calculated",
maxDistance: radiusInKm * 1000,
includeLocs: "dist.location",
spherical: true
}).exec(cb);
我想调用toObject(),因为我需要转换结果,如下所示
mySchema.options.toObject.transform = function (doc, ret) {
ret.latitude = ret.loc.coordinates[1];
ret.longitude = ret.loc.coordinates[0];
for (var i = 0; i < doc.storeImages.length; i++) {
ret.storeImages[i] = config.get("cdn.mediaURL") + doc.storeImages[i];
}
delete ret.loc;
delete ret.__v;
}