将string转换为聚合中的数字

我正在寻找一种方法来使用Mongoose的聚合pipe道来汇总数据。 我有一个模式,看起来像这样:

var Object = new Schema ({ Object2 : { type : ObjectId, ref : 'Object2' }, Object3 : { type : ObjectId, ref : 'Object3' }, value : {}, unit : String }) 

“值”字段通常是一个数字,但我允许用户在转换数字的字段中包含文本。 因此,值被存储为一个string,然后我把它转换成一个数字。 我不能把它作为一个数字存储,因为没有办法将它转换回用户的显示。

我一直试图执行一个Mongoose $ sumpipe道来总结这些值,同时仍然允许我转换数字。 这是我试过的:

 data.aggregate([ { $match: { $and: [{Object2: mongoose.Types.ObjectId(id)}, {Object3: {$in: sessions.map(function(this){ return new mongoose.Types.ObjectId(this._id); })}}] } }, { $project: { 'value': calculateNumber('value') } }, { $group: { _id: null, value: { $sum: "$value"}, unit: { $first: "$unit"} } } ], function(err, result) { sendCallback(err, result, callback); return; }) 

但是,我得到的值为0.不使用项目阶段给出的值为0,我不知道是否有任何方法来使用项目阶段来应用我的function,并将字段转换为数字,以便我可以利用$ sum。

任何帮助,而不是只声明价值作为我的模式中的数字,将不胜感激!