programing

'객체 배열'을 키 값의 단순 배열에 매핑합니다.

telecom 2023. 6. 24. 08:46
반응형

'객체 배열'을 키 값의 단순 배열에 매핑합니다.

저는 mongoDB 집계 파이프라인이 처음이고 정말 기본적인 질문이 있지만 어디에서도 답을 찾을 수 없었습니다.다음 블록을 간단히 변환하고 싶습니다.

"exclude" : [
            {
                "name" : "Accenture"
            }, 
            {
                "name" : "Aon Consulting"
            }
        ]

대상:

"exclude" : [
            "Accenture",
            "Aon Consulting"
        ]

집계 파이프라인을 사용하지만 https://docs.mongodb.com/manual/reference/operator/aggregation/ 의 문서를 검토한 후에도 방법을 찾을 수 없는 것 같습니다.도와주셔서 고마워요.

@chridam의 대답은 정확하지만, 사용할 필요는 없습니다.$map.간단하죠.$addFields/$project충분할 것입니다.

db.collection.aggregate([
    {
        $addFields: {
            exclude : '$exclude.name'
        }
    }
])

통합 프레임워크를 사용하여 혁신을 처리한 것은 분명 올바른 방향이었습니다.배열의 개체 키를 키 값 배열에만 매핑하는 주 연산자가 이 경우에 해당합니다.

파이프라인 내에서 함께 사용하여 변환된 필드를 다음과 같이 투영합니다.

db.collection.aggregate([
    {
        "$addFields": {
            "exclude": {
                "$map": {
                    "input": "$exclude",
                    "as": "el",
                    "in": "$$el.name"
                }
            }
        }
    }
])

위에서 파이프라인 단계는 문서에 새 필드를 추가하고 새 필드의 이름이 기존 필드 이름과 동일한 경우 다음을 포함합니다._id)에서 해당 필드의 기존 값을 지정된 식의 값으로 덮어씁니다.

그래서 본질적으로 위의 것들이 위를 대체합니다.excludes.를 사용하여 변환된 배열을 가진 배열은 입력 배열의 각 요소에 식을 적용하여 작동합니다.식은 각 요소를 변수 이름($$el)에 명시된as필드를 선택하고 적용된 결과가 있는 배열을 반환합니다.

언급URL : https://stackoverflow.com/questions/46466409/map-an-array-of-objects-to-a-simple-array-of-key-values

반응형