我想总结一下minuts中starttime和endtime的差异。
{
"_id" : ObjectId("56cd544df7851e850d8b4573"),
"user_id" : "281",
"document_id" : "1455614372.pdf",
"page_number" : "1",
"starttime" : ISODate("48118-03-20T01:35:14Z"),
"endtime" : ISODate("48118-03-20T04:29:10Z")
}
{
"_id" : ObjectId("56cd544df7851e850d8b4574"),
"user_id" : "281",
"document_id" : "1455614372.pdf",
"page_number" : "1",
"starttime" : ISODate("48118-03-20T14:29:49Z"),
"endtime" : ISODate("48118-06-22T12:52:36Z")
}
{
"_id" : ObjectId("56cd544df7851e850d8b4575"),
"user_id" : "281",
"document_id" : "1455614372.pdf",
"page_number" : "2",
"starttime" : ISODate("48118-03-20T04:29:10Z"),
"endtime" : ISODate("48118-03-20T14:29:49Z")
}
我的收藏名称是pdftracker。
答案 0 :(得分:4)
您不会说出要分组的字段,但假设您需要" user_id"和" document_id"组合。无论它只是以下$group
声明中的_id
字段。
至于" interval",那么日期数学就在你身边,当你$subtract
一个Date
对象来自另一个,那么结果就是"差"表示在"毫秒"。所以这又需要一点转换:
db.collection.aggregate([
{ "$group": {
"_id": { "user_id": "$user_id", "document_id": "$document_id" },
"totalMinites": {
"$sum": {
"$divide": [
{ "$subtract": [ "$endtime", "$starttime" ] },
1000 * 60
]
}
}
}}
])
简单数学汇总到$sum
分组的总数。 1000毫秒乘以60秒作为毫秒结果的除数可以转换为分钟。