差不多我的数据看起来是这样的:MongoDB查询最新数据?
{
"name" : "Name1",
"monthson" : "4",
"data" : "OLD DATA FOR 1"
},
{
"name" : "Name1",
"monthson" : "5",
"data" : "LATEST DATA FOR 1"
},
{
"name" : "Name2",
"monthson" : "7",
"data" : "OLD DATA FOR 2"
},
{
"name" : "Name2",
"monthson" : "8",
"data" : "LATEST DATA FOR 2"
}
我想每一个名字,然后将数据输出最晚想出一个办法来组的一切。 (monthson代表每个集合有多少个月是活跃的,所以最高的月份是最新的)。
我Mongo的查询看起来是这样的:
db.collection.aggregate(
[
{$match: {$in: ["name1", "name2"]}}
{$group:
{
_id:"$name",
monthson:{$max: "$monthson"},
data: {$addToSet: "$data"}
}},
])
输出看起来是这样的:
{
_id:"Name1",
monthson: 5,
data: ["OLD DATA FOR 1", " LATEST DATA FOR 1"]
}
{
_id:"Name2",
monthson: 8,
data: ["LATEST DATA FOR 2", "OLD DATA FOR 2"]
}
诀窍是我每次运行此查询时它增加了每个组数据,以我的结果当我只想要与最高月份相对应的数据时。我无法查询第一个,最后一个或最高的数据,因为它们将始终以随机顺序排列。
专业提示:不要求“尽快”帮助,但请[阅读本社区讨论](http://meta.stackoverflow.com/q/326569/472495)。 – halfer