[MONGODB] MongoDB를이 - $ 크기에 대한 인수는 배열해야하지만 유형이었다 EòÒ / 실종
MONGODBMongoDB를이 - $ 크기에 대한 인수는 배열해야하지만 유형이었다 EòÒ / 실종
icCube와 MongoDB의 데이터 소스를 만들려고. 아이디어는 새로운 분야로 배열의 크기를 반환하는 것입니다. 뭔가 같은 :
$project:
{
"people": 1,
"Count myFieldArray" : {$size : "$myFieldArray" }
}
하지만 일부 레코드 다음과 같은 오류에 대한 받고 있어요 :
The argument to $size must be an Array, but was of type: EOO
방법은 필드가 배열 (오류를 제거하기가) 비어 있거나없는 경우 크기가 0이라고 있습니까?
해결법
-
==============================
1.당신은 여기 $ IFNULL 연산자를 사용할 수 있습니다. 이 필드는 어느 주어진 오차로되지 배열 여부 존재 같다 :
당신은 여기 $ IFNULL 연산자를 사용할 수 있습니다. 이 필드는 어느 주어진 오차로되지 배열 여부 존재 같다 :
{ "$project": { "people": 1, "Count": { "$size": { "$ifNull": [ "$myFieldArray", [] ] } } }}
또한이 경우에 대비하여 $ 매치에서 $ 유형이 할 일의 존재를 확인하고 싶지만 배열하지 않을 수 있습니다.
-
==============================
2.대체 솔루션은 널 (null) 사용과 문서를 제거하는 것입니다
대체 솔루션은 널 (null) 사용과 문서를 제거하는 것입니다
$match: {myFieldArray: { $elemMatch: { $exists: true } }}
또한, (여기서는 "$ myFieldArray") '$'참조 $ 크기 인수로서 사용되는 문서 필드는 돌출부의 일부이어야한다.
$project: { "people": 1, "myFieldArray":1, "Count myFieldArray" : {$size : "$myFieldArray" } }
-
==============================
3.MongoDB를 3.2 및 최신에서, 당신은 당신의 분야가 $ 끝나면 IsArray와 평가에 필드를 반환하는 $ 콘드 연산자와 함께 배열이 있는지 확인하기 위해 $ 끝나면 IsArray을 사용할 수 있습니다 :
MongoDB를 3.2 및 최신에서, 당신은 당신의 분야가 $ 끝나면 IsArray와 평가에 필드를 반환하는 $ 콘드 연산자와 함께 배열이 있는지 확인하기 위해 $ 끝나면 IsArray을 사용할 수 있습니다 :
{ "$project": { "people": 1, "myFieldArrayCount": { "$size": { "$cond": [ { "$isArray": "$myFieldArray" }, "$myFieldArray", [] ] } } }}
from https://stackoverflow.com/questions/24201120/mongodb-the-argument-to-size-must-be-an-array-but-was-of-type-eoo-missing by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 만들기 mongoose.js 쿼리는 동 기적으로 실행 (0) | 2019.12.04 |
---|---|
[MONGODB] 고유 한 사용자 ID의 저장 순서에 MongoDB의 자동 증가 (0) | 2019.12.04 |
[MONGODB] 어떻게 몽구스의 고유 값에 대한 쿼리는 무엇입니까? (0) | 2019.12.04 |
[MONGODB] MongoDB의 전체 및 부분 텍스트 검색 (0) | 2019.12.04 |
[MONGODB] 어레이 내 요소 MongoDB에 의해 기 (0) | 2019.12.04 |