1

MongoDB 집계 프레임 워크를 사용하여 데이터베이스에서 그룹화, 정렬 및 프로젝트를 처리하고 있습니다. 내 결과 배열의 요소는 나는 다음과 같은MongoDB : 집계가 DateTime 문자열에서 ISODate를 만듭니다.

내가 ISODate에 그 날짜 시간 문자열을 변환 할
{ 
    $project: { 
    _id: 0, 
    someField: 1, 
    timestamp: '$_id.timestamp', 
    } 
} 

같은 외모로 어려움을 겪고 다음

{ 
    someField: "someField", 
    timestamp: "2017-12-05T19:00:00.000Z" 
} 

집계 파이프 라인 단계처럼 보인다. ISODate('$timestamp')을 사용하면 mongo 클라이언트가 Invalid ISODate 오류를 반환합니다. 또 다른 방법은 Date('$timestamp')을 사용하는 것인데, Date()을 사용하는 것처럼 로컬 시간을 반환합니다. 그럼에도 불구하고 print(ISODate("2017-12-05T19:00:00.000Z"))을 mongo 클라이언트에 직접 입력하면 모든 것이 예상대로 작동합니다.

제안 사항?

편집 : 우리는 Mongo 3.4를 사용하고 있습니다. 버전 3.6은 해결책을 제시하지만, 3.6으로 업그레이드 할 수 있을지 확신 할 수 없습니다. (아래 답변 참조)

답변

1

3.6에서 사용할 수있는 새로운 $dateFromString 연산자를 사용할 수 있습니다.

db.collection.aggregate([ 
    { 
    "$project": { 
     "timestamp": { 
     "$dateFromString": { 
      "dateString": "$timestamp" 
     } 
     } 
    } 
    } 
]) 
+0

감사합니다. 이것은 Mongo 3.6+에서 작동합니다. Rn 3.4에서 3.6으로 업그레이드 할 수 있는지 확실하지 않습니다. 3.4 솔루션도 있습니까? – Philipp

관련 문제