1
我工作的MongoDB,我有一个收集这种结构:选择顶层的每一个国家
{
"_id" : 1,
"State": "Vermont",
"Temperature" : 20,
"Day" : 1
}
{
"_id" : 2,
"State": "Vermont",
"Temperature" : 50,
"Day" : 2
}
{
"_id" : 1,
"State": "Vermont",
"Temperature" : 40,
"Day" : 2
}
{
"_id" : 4,
"State": "Texas",
"Temperature" : 20,
"Day" : 1
}
{
"_id" : 5,
"State": "Texas",
"Temperature" : 50,
"Day" : 2
}
{
"_id" : 6,
"State": "Texas",
"Temperature" : 40,
"Day" : 2
}
而且我需要Node.js的筛选与状态高温的文件,并更新只有与最高温度将密钥文件:值"Max_Value": "true"
,结果将是:
{
"_id" : 1,
"State": "Vermont",
"Temperature" : 20,
"Day" : 1
}
{
"_id" : 2,
"State": "Vermont",
"Temperature" : 50,
"Day" : 2,
"Max_Value": "true"
}
{
"_id" : 1,
"State": "Vermont",
"Temperature" : 40,
"Day" : 2
}
{
"_id" : 4,
"State": "Texas",
"Temperature" : 20,
"Day" : 1
}
{
"_id" : 5,
"State": "Texas",
"Temperature" : 50,
"Day" : 2,
"Max_Value": "true"
}
{
"_id" : 6,
"State": "Texas",
"Temperature" : 40,
"Day" : 2
}
我的节点代码:
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/weather', function(err, db) {
if(err) throw err;
var options = {
"sort": [['State','1'], ['Temperature','-1']]
}
db.collection('data').find({}, options).toArray(function(err, doc) {
if(err) throw err;
//Here I sorted the collection, but how I take only the first documents for each state?
return db.close();
});
});
所以,我怎么只需要每个状态的第一个文件和更新呢?
我会尽力把它翻译到node.js的,目前我在节点漂亮的小白。 – 2014-11-03 14:22:58
目前我知道如何使用Aggregate并且工作,谢谢。 – 2014-11-20 13:02:28