这是$max
的更新版本。我已经尝试了您的此代码。
db.contact.aggregate([
{$sort: {machine_Id: 1, date:1}},
{$group:{
_id: '$machine_Id',
max_air_Temp: {$max:"$air_Temp"}
}
}
], function(err, meibanlist) {
if (err || !meibanlist ) console.log("Record not found");
else meibanlist.forEach (function(machine_Id){
console.log(machine_Id);
})
});
但是当我在MongoDB中运行它时,它给了我:
{ _id: 5, max_air_Temp: 819 }
{ _id: 857, max_air_Temp: 121 }
{ _id: 52, max_air_Temp: 146 }
{ _id: 67, max_air_Temp: 300 }
{ _id: 655, max_air_Temp: 84 }
{ _id: 15, max_air_Temp: 844 }
{ _id: 363, max_air_Temp: 861 }
{ _id: 717, max_air_Temp: 623 }
{ _id: 189, max_air_Temp: 639 }
{ _id: 346, max_air_Temp: 563 }
{ _id: 470, max_air_Temp: 804 }
{ _id: 917, max_air_Temp: 697 }
{ _id: 167, max_air_Temp: 438 }
{ _id: 4, max_air_Temp: 467 }
但是当我尝试这段代码时:
db.contact.aggregate([{$group: {_id: "machine_Id", max: {$max: "$air_Temp"}}}],
function(err, meibanlist) {
if (err || !meibanlist) console.log("Record not found");
else meibanlist.forEach (function(machine_Id){
console.log(machine_Id);
})
});
它向我展示了这个输出:这个输出与我想要的更相似,因为它只显示一个输出,但我希望'machine_id'
显示确切的 id 而不是单词 machine_id
.您知道如何编辑此集吗?
输出:
{ _id: 'machine_Id', max: 997 }
在聚合查询中使用_id: '$machine_Id'
而不是_id: 'machine_Id'
db.contact.aggregate([
{$sort: {machine_Id: 1, date:1}},
{$group:{
_id: '$machine_Id',
max_air_Temp: {$max:"$air_Temp"}
}
}
], function(err, meibanlist) {
if (err || !meibanlist ) console.log("Record not found");
else meibanlist.forEach (function(machine_Id){
console.log(machine_Id);
})
});
更新:根据您的新要求,您可能只需要一个输出,该输出air_Temp
值最大,machine_id
为_id
。
所以可以试试
db.contact.aggregate([
{$sort: {air_Temp: -1}},
{$limit:1},
{$project:{_id:"$machine_Id",max_air_Temp:"$air_Temp" }}
], function(err, meibanlist) {
if (err || !meibanlist ) console.log("Record not found");
else meibanlist.forEach (function(machine_Id){
console.log(machine_Id);
})
});
看看文档中的示例。
取代
_id: 'machine_Id',
跟
_id: '$machine_Id',