db.getCollection('collectionName').find({
'MaterialNumber':'2093668',
'OutputScore.Softening Point':{$exists:true}}).forEach(function(myDoc){
var score = $push:{(myDoc.OutputScore['Softening Point'].ActualValue - 75.0)/75.0 }
print(scores)
});
我正在使用robomongo ......获得如下值:
0.02666666666666667
0.013333333333333334
0.02666666666666667
0.02666666666666667
我想在数组中推送它 这样我就能得到这个值的最小值和最大值
答案 0 :(得分:0)
可以通过多种方式获得集合中的最低和最高分数。以下示例使用示例数据in this gist
result = db.test.find({
'MaterialNumber': '2093668',
'OutputScore.Softening Point': {'$exists': True},
})
scores = [(doc['OutputScore']['Softening Point']['ActualValue'] - 75.0) / 75.0 for doc in result]
max_score = max(scores)
min_score = min(scores)
>>print(max_score, min_score)
3.0 -0.2
pipeline = [
{
'$match': {
'MaterialNumber': '2093668',
'OutputScore.Softening Point': {'$exists': True},
},
},
{
'$group': {
'_id': None,
'Scores': {'$push': {'$divide': [{'$subtract': ['$OutputScore.Softening Point.ActualValue', 75.0]}, 75.0]}}
}
},
{
'$project': {
'maxScore': {'$max': '$Scores'},
'minScore': {'$min': '$Scores'},
}
}
]
result = db.test.aggregate(pipeline)
>> print(list(result))
[{'_id': None, 'maxScore': 3.0, 'minScore': -0.2}]