복붙노트

[MONGODB] 풀 타임 스탬프가 통합 프레임 워크에 주어 졌을 때 어떻게 날짜를 기준으로 집계하는?

MONGODB

풀 타임 스탬프가 통합 프레임 워크에 주어 졌을 때 어떻게 날짜를 기준으로 집계하는?

나는 모든 오류가 날짜 필드를 전달 그래서, 오류의 컬렉션을 가지고있다. 어떻게 하루 오류 만 (즉, 하루의 시간을 제외) 집계 / 수 / 그룹 수 있습니까? 좀 스마트 프로젝션이 적용되어야한다 같아요.

해결법

  1. ==============================

    1.다음과 같은 집계 연산자를 사용하여이 작업을 수행 할 수 있습니다 :

    다음과 같은 집계 연산자를 사용하여이 작업을 수행 할 수 있습니다 :

    이렇게하면 각 날짜에 대한 오류 수를 제공합니다 :

    db.errors.aggregate(
        { $group : {
            _id: {
                year : { $year : "$date" },        
                month : { $month : "$date" },        
                day : { $dayOfMonth : "$date" },
            },
            count: { $sum: 1 }
        }}
    );
    

    이 예에서는 오류 문서의 날짜 필드에 날짜를 입력 BSON 날짜로 가정합니다. 이 MongoDB의에서 타임 스탬프 유형은, 그러나 이러한 유형의 사용은 명시 적으로 문서에 의해 권장하지 않습니다 :

  2. ==============================

    2.당신은 $ 프로젝트 (집계)를 사용하여 특정 날짜 형식 문자열에 타임 스탬프 필드를 변환 할 수 있습니다

    당신은 $ 프로젝트 (집계)를 사용하여 특정 날짜 형식 문자열에 타임 스탬프 필드를 변환 할 수 있습니다

    aggregate([
        {
            '$project': {
                newFieldName: {'$dateToString': {format: '%Y-%m-%d', date: '$yourDateFieldName'}}
            }
        }, {
            '$group': {
                _id: {newFieldName: '$newFieldName'},
                viewCount: {'$sum': 1}
            }
        }, 
        {'$sort': {'_id.newFieldName': 1}}
    ], {})
    
  3. from https://stackoverflow.com/questions/15657501/how-to-aggregate-by-date-when-a-full-timestamp-is-given-in-aggregation-framework by cc-by-sa and MIT license