在 MongoDB 中,如何忽略从获取时间起不到五分钟的时间内插入的文档
In MongoDB, how to ignore documents that was inserted less than five minutes of time from the time of fetching
testResults.aggregate([
{ $match: { testId: { "$exists": true } } },
{ $sort: { _id: -1 } },
{
$group: {
_id: "$testId",
testDetails: {
$push: {
result: "$result",
testName: "$testName"
}
}
}
},
{
$addFields: {
testDetails: { $slice: ["$testDetails", 30] }
}
}
])
.exec(function (err, testResults) {
if (err) res.send(err);
res.json(testResults);
});
使用这种聚合方法,我正在获取最近的 30 个文档。
现在,我需要忽略在提取后不到五分钟的时间内插入的文档。
在,$match aggregate如何实现这个或者有什么其他方法吗?
像这样的$match
阶段应该做到:
{
$match: {
$expr: {
$lt: [
{$toDate: '$_id'},
{$subtract: [new Date(), 300000]}
]
}
}
}
300000
是以毫秒为单位的 5 分钟。
testResults.aggregate([
{ $match: { testId: { "$exists": true } } },
{ $sort: { _id: -1 } },
{
$group: {
_id: "$testId",
testDetails: {
$push: {
result: "$result",
testName: "$testName"
}
}
}
},
{
$addFields: {
testDetails: { $slice: ["$testDetails", 30] }
}
}
])
.exec(function (err, testResults) {
if (err) res.send(err);
res.json(testResults);
});
使用这种聚合方法,我正在获取最近的 30 个文档。 现在,我需要忽略在提取后不到五分钟的时间内插入的文档。 在,$match aggregate如何实现这个或者有什么其他方法吗?
像这样的$match
阶段应该做到:
{
$match: {
$expr: {
$lt: [
{$toDate: '$_id'},
{$subtract: [new Date(), 300000]}
]
}
}
}
300000
是以毫秒为单位的 5 分钟。