mongodb 查询问题--在线等,

字段: appId, moduleNo, curValue, receiveDate.

数据库中数据例子:

{
"appId": "appA",
"moduleNo": 1,
"curValue" : 21,
"receiveDate" : ISO(5)
}
{
"appId": "appA",
"moduleNo": 1,
"curValue" : 21,
"receiveDate" : ISO(4)
}
{
"appId": "appA",
"moduleNo": 2,
"curValue" : 23,
"receiveDate" : ISO(3)
}
{
"appId": "appB",
"moduleNo": 1,
"curValue" : 24,
"receiveDate" : ISO(1)
}
{
"appId": "appB",
"moduleNo": 2,
"curValue" : 25,
"receiveDate" : ISO(2)
}
现在想一次性查询出 appId为 appA, appB, moduleNo为 1,2 receiveDate 为最新的数据。

就是所有 appId+moduleNo 组合的最新一条数据。

返回结果应该是

{
"appId": "appA",
"moduleNo": 1,
"curValue" : 21,
"receiveDate" : ISO(5)
}
{
"appId": "appA",
"moduleNo": 2,
"curValue" : 23,
"receiveDate" : ISO(3)
}
{
"appId": "appB",
"moduleNo": 1,
"curValue" : 24,
"receiveDate" : ISO(1)
}
{
"appId": "appB",
"moduleNo": 2,
"curValue" : 25,
"receiveDate" : ISO(2)
}
求mongdodb 上应该怎么实现?

用$in 来判断appId,moduleNo的条件
用$sort按receiveDate 排序,然后limit

可以用spring mongodb 来写。很简单,API和SQL类似。