0
我正在彙總一個大數據,我需要根據它們的類型對數據進行分組,還需要查找來自另一個collections.inside $組的數據,我希望查找數據。 我對聚合代碼是這樣:
NotificationSchema.aggregate([{
$match: condition
}, {
$group: {
_id: "$type",
details: {
$push: "$$ROOT"
},
count: {
$sum: 1
}
}
}, {
$sort: {
_id: -1
}
}, {
$lookup: {
from: "vehicles",
localField: "details.device_id",
foreignField: "device_id",
as: "vehicle"
}
}], function(err, result) {
if (err) {
res.status(500);
return res.json({
result: err
});
}
console.log('res', result[0].details[0]);
res.json({
result: result
});
});
如果我刪除或註釋$組碼我與車輛陣列中的數據,但使用$組我得到車輛陣列空,因爲我只有兩個記錄類型在數據庫中,我得到了兩個空車陣列。但我有102條記錄,所以我需要102輛車的陣列,我怎麼能得到這樣的結果。 什麼我得到在控制檯現在是
res [ { _id: 'Vehicle Delay Alert!',
details:
[ [Object],
....57 object...
[Object] ],
count: 57,
vehicle: [] },
,每個對象內,我不找車陣,所以我想從這裏取出車輛陣列和獲取從每一個對象在$查找產生的車輛陣列。 任何建議,非常感謝。
我欠你的,先生。我也想限制只有50的記錄,但想知道記錄的總長度。我可以執行this.without $ group現在。 :) – jsgeek
您可以使用$ limit來限制記錄的數量:https://docs.mongodb.com/manual/reference/operator/aggregation/limit/。如果你不想用$組來計算數字,你可以得到結果的長度 –
,因爲我知道我將按照限制中的定義獲取數據。我可以得到50條記錄,但是如果總長度是19808,我也想獲得總記錄長度,那麼我只想獲取50條數據,並且總長度爲19808 – jsgeek