Sag*_*u K 4 mongodb mongodb-query aggregation-framework
我将以下结构中的文档保存在我的 mongodb 中。
用户日志
{
"_id":"111",
"studentID" : "1",
"loginTime" : "2019-05-01 09:40:00",
"logoutTime" : "2019-05-01 19:40:00"
},
{
"_id":"222",
"studentID" : "1",
"loginTime" : "2019-05-02 09:40:00",
"logoutTime" : "2019-05-02 20:40:00"
},
{
"_id":"333",
"studentID" : "2",
"loginTime" : "2019-05-02 09:40:00",
"logoutTime" : "2019-05-02 20:40:00"
}
Run Code Online (Sandbox Code Playgroud)
是否可以查询 loginTime 和 logoutTime 之间的时间段的文档。例如:大于 20 小时
mongodb version = 3.4
您可以使用以下聚合
db.collection.aggregate([
{ "$project": {
"difference": {
"$divide": [
{ "$subtract": ["$logoutTime", "$loginTime"] },
60 * 1000 * 60
]
}
}},
{ "$group": {
"_id": "$studentID",
"totalDifference": { "$sum": "$difference" }
}},
{ "$match": { "totalDifference": { "$gte": 20 }}}
])
Run Code Online (Sandbox Code Playgroud)
你必须从它开始,它会给你减去的时间戳,然后用它来获得以小时为单位的时间。$subtract loginTimelogoutTime$divide3600000
| 归档时间: |
|
| 查看次数: |
3721 次 |
| 最近记录: |