我找到了答案,「可以在字段名稱查詢」在另一篇博客這表明遍歷鍵(布魯斯建議)只這樣的MapReduce的功能ALA:
var d = 0;
for (var key in this.values)
d = Math.max(d, parseInt(key));
對於MMS例如模式(在一個月timestamp_minute和標記天低於v值數組中的交換)這裏的數據和產生最近的指標日期查詢:
db.metricdata.find();
/* 0 */
{
"_id" : ObjectId("5277e223be9974e8415f66f6"),
"month" : ISODate("2013-10-01T04:00:00.000Z"),
"type" : "ga-pv",
"v" : {
"10" : 57,
"11" : 49,
"12" : 91,
"13" : 27,
...
}
}
/* 1 */
{
"_id" : ObjectId("5277e223be9974e8415f66f7"),
"month" : ISODate("2013-11-01T04:00:00.000Z"),
"type" : "ga-pv",
"v" : {
"1" : 145,
"2" : 51,
"3" : 63,
"4" : 29
}
}
和地圖功能降低:
db.metricdata.mapReduce(
function() {
var y = this.month.getFullYear();
var m = this.month.getMonth();
var d = 0;
// Here is where the field names used
for (var key in this.v)
d = Math.max(d, parseInt(key));
emit(this._id, new Date(y,m,d));
},
function(key, val)
{
return null;
},
{out: "idandlastday"}
).find().sort({ value:-1}).limit(1)
這將產生類似
/* 0 */
{
"_id" : ObjectId("5277e223be9974e8415f66f7"),
"value" : ISODate("2013-11-04T05:00:00.000Z")
}
我可能會建議你總是雙店,如果這是你想要做一個常見的查詢值:'「most_recent_value」' – WiredPrairie