MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongodb, nhóm theo ngày tháng và tính theo giờ

Từ những gì tôi hiểu trong câu hỏi của bạn (bạn thực sự cần cung cấp một vài tài liệu mẫu với lược đồ của mình) nếu Traitement của bạn mô hình có cấu trúc sau, ví dụ:

/* 0 */
{
    "_id" : 1,
    "user" : "abc",
    "dateEntre" : ISODate("2014-03-01T08:00:00.000Z"),
    "dateSortie" : ISODate("2014-03-01T13:00:00.000Z")
}

/* 1 */
{
    "_id" : 2,
    "user" : "jkl",
    "dateEntre" : ISODate("2014-03-01T08:00:00.000Z"),
    "dateSortie" : ISODate("2014-03-01T10:30:00.000Z")
}
/* 2 */
{
    "_id" : 3,
    "user" : "jkl",
    "dateEntre" : ISODate("2014-03-01T12:00:00.000Z"),
    "dateSortie" : ISODate("2014-03-01T18:00:00.000Z")
}

Khung tổng hợp của bạn sẽ có một $project hoạt động đường ống trong đó bạn nhận được sự khác biệt giữa hai ngày bằng cách sử dụng $subtract toán tử và sau đó chuyển đổi sự chênh lệch ngày đó theo mili giây thành giờ bằng cách sử dụng $divide nhà điều hành. Giai đoạn cuối cùng trong quy trình của bạn sẽ là sử dụng $group toán tử để nhóm các tài liệu từ đường dẫn trước đó và $sum chênh lệch ngày giờ:

Traitement.aggregate([ 
    { 
        $project: { 
            user: 1,             
            dateDifference: { 
                $divide: [{ 
                    $subtract: [ "$dateSortie", "$dateEntre" ]
                    }, 1000*60*60
                ] 
            }
         }
    },
    { 
        $group: { 
            _id: "$user",             
            total : { 
                $sum : "$dateDifference"
            }
        }
    } 
])

Kết quả:

/* 0 */
{
    "result" : [ 
        {
            "_id" : "jkl",
            "total" : 8.5
        }, 
        {
            "_id" : "abc",
            "total" : 5
        }
    ],
    "ok" : 1
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Xóa tài liệu mới nhất khỏi Mongo DB trong một truy vấn

  2. Nhà điều hành đường ống tổng hợp MongoDB $ min

  3. Không thể kết nối với vùng chứa MongoDB từ vùng chứa Docker khác

  4. MongoDB và MySQL

  5. Bản sao Chèn hàng loạt MongoDB