我有以下收集 -如何使用mongoDB从集合中找到不同的(和最大的)值?
[{
"customerId" : "54a32e9f1e14fa5476d654db",
"hostId" : "192.168.20.20",
"runtimeMilliSeconds" : 1422007201815
}
{
"customerId" : "54a32e9f1e14fa5476d654db",
"hostId" : "192.168.20.20",
"runtimeMilliSeconds" : 1422008101736
}
{
"customerId" : "54a32e9f1e14fa5476d654db",
"hostId" : "192.168.20.21",
"runtimeMilliSeconds" : 1422009002239
}
{
"customerId" : "54a32e9f1e14fa5476d654db",
"hostId" : "192.168.20.21",
"runtimeMilliSeconds" : 1422009901379
}
{
"customerId" : "54a32e9f1e14fa5476d654db",
"hostId" : "192.168.20.22",
"runtimeMilliSeconds" : 1422010801685
}
{
"customerId" : "54a32e9f1e14fa5476d654db",
"hostId" : "192.168.20.22",
"runtimeMilliSeconds" : 1422010801585
}]
我也有主机标识的名单为: “192.168.20.20”, “192.168.20.21”, “192.168.20.22”]
我想匹配HOSTID清单,收集和发现最新的(最大)runtimeMilliSeconds只得到输出如下 -
[{"hostId":"192.168.20.20", "runtime": 1422007201815},
{"hostId":"192.168.20.21", "runtime": 1422009002239},
{"hostId":"192.168.20.22", "runtime": 1422010801685}]
我已经尝试了与蒙戈聚集以下 -
{ "$match" : { "hostId" : { "$in" : [ "192.168.20.20" , "192.168.20.21" , "192.168.20.22"]} ,
"customerId" : "54a32e9f1e14fa5476d654db"}},
{ "$sort" : { "runtimeMilliSeconds" : -1}},
{ "$group" : { "_id" : { "hostId" : "$hostId" ,
"runtime" : "$runtimeMilliSeconds"}}},
{ "$project" : { "hostId" : "$_id.hostId" ,
"runtimeMilliSeconds" : "$_id.runtime" , "_id" : 0}}
但它给我集合中的所有价值。
如何使用mongo获得上述输出?
$ max is better +1 – Disposer 2015-02-12 08:02:14