【发布时间】:2015-03-31 11:59:27
【问题描述】:
一个集合中有六台设备,每台都有许多记录,一些有新日期的记录,一些有一周或/和一个月前的记录。我需要一个返回每个设备的最新最后记录的查询。在 .aggregate() 的情况下,我需要提交完整的“数据”。
这里是示例 json。
{
"date_time" : some-date
"device_id" : 27,
"gateway_id" : 1,
"data": [{"r" : 203,"v" : 3642},{"r" : 221,"v" : 3666}]
}
{
"date_time" : some-date
"device_id" : 28,
"gateway_id" : 1,
"data": [{"r" : 203,"v" : 3002},{"r" : 221,"v" : 3006}]
}
{
"date_time" : some-date
"device_id" : 29,
"gateway_id" : 1,
"data": [{"r" : 203,"v" : 3002}, {"r" : 221,"v" : 3006}]
}
我尝试了很多查询,但没有成功。
请注意以下不适用于这种情况。
db.col.find({"device_id": {"$in": devices}, "date_time": { "$gte": last_date}}) .sort({$natural: -1})
db.col.find({"device_id": {"$in": devices}, "date_time": { "$gte": last_date}}) .sort({$natural: -1}).limit(1)
db.col.find({"device_id": {"$in": devices}}) .sort({"date_time": -1}).limit(1)
db.col.find({"device_id": {"$in": devices}}) .sort({"_id": -1}).limit(1)
我正在寻找仅提供收集中每个设备的最新记录的查询。请注意,在 .aggregate() 的情况下,我需要提交完整的“数据”。
【问题讨论】:
-
尝试聚合查询。这将有助于找到您需要的相同结果