按项目,用户和月份分组,并按小时计算

时间:2017-11-23 10:22:04

标签: database mongodb mongoose mongodb-query

这保留了每次工作人员处理该项目的记录,并且一天内可能有几个记录,因为他处理了几件事情。 我有这个系列“WORKSDAYS”:

    {
    _id: { $ref: T_WORKERS, $id: id},
    january: 168,
    febrary: 120,
    ...
}

我需要为每个项目提供类似的东西:

    aggregate([
    {
        $match: {
                "project.$id": "03b80b87asdasdasdasd9"
              }
    },{
       $group: {
                "_id": "$worker",
                "hours":{"$sum":"$hours"}
        }
    }
])

或者代替1月份放0或1,2月= 02等。 我试过这个,工人给我和项目的总时间,但我想要每个月的工作时间:

.aggregate([
    {$match: {
                "project.$id": "03b80b8asdasdasdasdasd7"
              }
    }, {
        $group: {
                "_id": "$worker",
                "month": { 
                        "$sum": {
                            "$cond": [
                                { "$gt": [
                                    { "$subtract": [ISODate("2018-01-01T00:00:00.000Z"), ISODate("2017-01-01T00:00:00.000Z") ] },
                                    new Date().valueOf() - ( 1000 * 60 * 60 * 24 )
                                ]},
                                "$hours",
                                0
                            ]
                        }
                    }
            }
        }])

我也想过,在给他开始和结束日期(例如:1月和12月并加入他们)

library(dplyr)
set.seed(123)
s<- sample (150,100)
data_train<- iris[s,]
data_test<- iris[-s,]
train <-data_train
test <-data_test
#train$Species <- as.factor(as.character(train$Species))
class <- unique(iris$Species)


for(i in 2:length(unique(iris$Species))-1){

  for(j in (i+1):length(unique(iris$Species))){
    print(paste(class[i],class[j],sep=","))

    class_i <- factor(as.factor(class[i]))
    class_j <- factor(as.factor(class[j]))


    train2 <- rbind(train[match(as.character(train$Species), class_i, nomatch = FALSE), ], 
                    train[match(as.character(train$Species), class_j, nomatch = FALSE), ])

    train2
    str(train2)


  }}

0 个答案:

没有答案