codememo

MongoDB - $size 인수는 어레이여야 하지만 유형: EOO / missing

tipmemo 2023. 2. 27. 22:39
반응형

MongoDB - $size 인수는 어레이여야 하지만 유형: EOO / missing

icCube를 사용하여 MongoDB 데이터 소스를 만드는 중입니다.이 아이디어는 배열 크기를 새 필드로 반환하는 것입니다.예를 들어 다음과 같습니다.

$project:
{ 
 "people": 1, 
 "Count myFieldArray" : {$size : "$myFieldArray" }
}

그러나 일부 레코드에 대해 다음과 같은 오류가 발생합니다.

The argument to $size must be an Array, but was of type: EOO

필드가 비어 있거나 배열이 아닌 경우 크기가 0이 되는 방법이 있습니까(오류 제거)?

여기서 오퍼레이터를 이용하실 수 있습니다.필드가 배열이 아니거나 지정된 오류로 인해 표시되지 않는 것 같습니다.

{ "$project": {
    "people": 1,
    "Count": { 
        "$size": { "$ifNull": [ "$myFieldArray", [] ] }
    }
}}

또, 어레이가 아닌 경우는, 에서 를 확인할 수도 있습니다.

MongoDB 3.2 이후에서는 를 사용하여 연산자와 함께 필드가 배열인지 여부를 확인하고 평가 시 필드를 반환할 수 있습니다.

{ "$project": {
    "people": 1,
    "myFieldArrayCount": { 
        "$size": { 
            "$cond": [ 
                { "$isArray": "$myFieldArray" }, 
                "$myFieldArray", 
                []
            ]
        } 
    }
}}

대체 솔루션은 null이 있는 문서를 삭제하는 것입니다.

$match: {myFieldArray: { $elemMatch: { $exists: true } }}

또한 '$' 참조에 의해 $size 인수로 사용되는 문서 필드(여기서 "$myFieldArray")도 투영에 포함되어야 합니다.

$project:
{ 
 "people": 1,
 "myFieldArray":1,
 "Count myFieldArray" : {$size : "$myFieldArray" }
}

언급URL : https://stackoverflow.com/questions/24201120/mongodb-the-argument-to-size-must-be-an-array-but-was-of-type-eoo-missing

반응형