【发布时间】:2016-08-02 23:34:57
【问题描述】:
我目前正在尝试通过匹配数组上的文档来查询一个集合,让我们调用Telemetry:
var hardwareIDs = ['A','B','C'];
Telemetry.find({ hardwareID: { $in: hardwareIDs }});
下面是Telemetry 记录的示例:
{
_id: xxxx,
insertedAtUTC: xxxx,
hardwareID: xxxx,
year: 2016,
month: 2,
day: 31,
hour: 0,
data: []
}
但我发现很难做的是获取每个匹配查询的最新的 3 个文档。如此有效地,我想返回一个看起来与此类似的游标:
[
{ insertedAtUTC: 3, hardwareID: "A", ... },
{ insertedAtUTC: 2, hardwareID: "A", ... },
{ insertedAtUTC: 1, hardwareID: "A", ... },
{ insertedAtUTC: 3, hardwareID: "B", ... },
{ insertedAtUTC: 2, hardwareID: "B", ... },
{ insertedAtUTC: 1, hardwareID: "B", ... },
{ insertedAtUTC: 3, hardwareID: "C", ... },
{ insertedAtUTC: 2, hardwareID: "C", ... },
{ insertedAtUTC: 1, hardwareID: "C", ... }
]
对于如何制定 MongoDB 查询来解决这个问题有什么想法吗?
当我在 MeteorJS 中使用 MongoDB 时,我已将其标记为 meteor。我目前正在尝试发布一个轻量级游标,因为 Telemetry 集合相当大,但我认为这不会对解决方案产生任何影响。
【问题讨论】:
标签: mongodb meteor mongodb-query aggregation-framework