1
目前,我想要查詢的集合爲每個$文件數量,讓我們稱之爲Telemetry
,通過陣列上匹配的文檔:返回X的匹配查詢
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查詢來解決這個問題的任何想法?
我用meteor
標記了這個標記,因爲我在MeteorJS中使用了MongoDB。我目前正在嘗試發佈輕量級光標,因爲Telemetry
集合相當大,但我認爲這不會對解決方案產生任何影響。
運行控制檯腳本標記此爲答案,因爲這肯定回答了這個問題,但使用的MapReduce在不幸的是,輸出Meteor框架返回了一些意想不到的結果。如果有必要,將更多地排除故障併發布另一個問題。謝謝你的時間! – jkhedani