>source

이 필드가 들어있는 컬렉션에 많은 문서가 있습니다. timeTaken : "00:10:00", 나는 모든 문서에서 요약하고 MongoDB Robo3T에서 단일 정수를 제공해야합니다.

10 번으로 바꾸고 싶습니까? 00:00:12는 무엇으로 바뀌 었습니까? 12:11:10은 무엇입니까?

Tom Slabbaert2021-05-04 20:30:16

안녕하세요. 같은 형식의 두 필드를 추가하고 싶습니다 00:10:00, 00 : 00 : 12. 동일한 형식으로 두 개의 필드를 추가하는 방법

Bhakti Deshpande2021-05-04 20:30:16

샘플 입력 및 예상 출력에서 ​​편집해야합니다. 나는 당신이 원하는 것을 정확히 확신하지 못합니다

Tom Slabbaert2021-05-04 20:30:16

안녕하세요. 컬렉션의 모든 문서에 필드가 있습니다 ..00 : 10 : 00이 마찬가지로 작업을 위해 찍은 시간입니다.이 형식의 모든 필드를 해당 컬렉션에서 추가하려고합니다.

Bhakti Deshpande2021-05-04 20:30:16

그래서 나는 그것이 HH : mm : ss 형식을 추측하고있다?

Tom Slabbaert2021-05-04 20:30:16
  • 답변 # 1

    우리의 전략은 문자열을의사록,초월시간, 숫자로 변환하고 합계 한 다음 구조를 재구성하십시오.

    이를 위해 연산자에 대한 액세스가 필요하며 이는 문서를 읽어야하며 code 에서이 작업을 수행 해야하는 이전 몽고 버전의 경우 버전 4.0 이상에 대해서만이를 수행 할 수 있습니다.

    다음 쿼리를 여러 단계로 나눌 수 있으므로 내가하는 일이 없으므로 2 단계로 다시 작성할 수 있습니다.$ Group.무대와 마지막$ Project.데이터를 재구성하는 단계.

    db.collection.aggregate([
      {
        "$addFields": {
          dataParts: {
            $map: {
              input: {
                $split: [
                  "$data",
                  ":"
                ]
              },
              as: "num",
              in: {
                "$toInt": "$$num"
              }
            }
          },
        }
      },
      {
        $group: {
          _id: null,
          seconds: {
            $sum: {
              "$arrayElemAt": [
                "$dataParts",
                2
              ]
            }
          },
          minutes: {
            $sum: {
              "$arrayElemAt": [
                "$dataParts",
                1
              ]
            }
          },
          hours: {
            $sum: {
              "$arrayElemAt": [
                "$dataParts",
                0
              ]
            }
          },
        }
      },
      {
        "$addFields": {
          finalSeconds: {
            $mod: [
              "$seconds",
              60
            ]
          },
        }
      },
      {
        $addFields: {
          minutes: {
            $sum: [
              "$minutes",
              {
                "$divide": [
                  {
                    "$subtract": [
                      "$seconds",
                      "$finalSeconds"
                    ]
                  },
                  60
                ]
              }
            ]
          },
        }
      },
      {
        $addFields: {
          finalMinutes: {
            $mod: [
              "$minutes",
              60
            ]
          },
          finalHours: {
            $sum: [
              "$hours",
              {
                $mod: [
                  {
                    $max: [
                      {
                        "$subtract": [
                          "$minutes",
                          60
                        ]
                      },
                      0
                    ]
                  },
                  60
                ]
              }
            ]
          }
        }
      },
      {
        $project: {
          final: {
            $concat: [
              {
                "$toString": "$finalHours"
              },
              ":",
              {
                "$toString": "$finalMinutes"
              },
              ":",
              {
                "$toString": "$finalSeconds"
              },
            ]
          }
        }
      }
    ])
    

    몽고 놀이터

  • 이전 python : django 2.1.x : (models.e026) 모델은 'primary_key= true'로 둘 이상의 필드를 가질 수 없습니다.
  • 다음 스레딩 오류 정적 어설 션 실패한 c++에 실패했습니다