2013-08-29 5 views
1

을 긴장 "testfield"가 배열인지 또는 일반 객체인지 여부는 모릅니다. 집계 쿼리에서 "$ unwind"를 적용하고 배열 유형이 "mongodb"가 아닌 경우 오류가 발생합니다. 즉, unwind 할 수 없습니다. 나는 필드가 타입 unwind인지 아닌지를 검사 할 수있는 방법을 알고 싶었고, 그렇지 않으면 일반 객체처럼 취급합니다.확인 배열 형은 전에 나는 다음과 같은 구조</p> <p>{: [ "XXXX"} { "test_id": 1, "test_name"] testfields}와 문서가

답변

0

나는 this이 도움이 될 것이라고 생각합니다.

$match: { $where : "Array.isArray(this.testfields)" } 

그런 다음, 당신이 오류없이 unwind을 사용할 수 testfields 필드가 배열로

unwind을 사용하기 전에 문서를 필터링 할 match를 사용하려고합니다.

+0

danidelvalle,하지만 $ match는 $로 작동하지 않습니다. –

+0

맞습니다. "$ match 쿼리 구문이 읽기 작업 쿼리 구문과 동일하기 때문에"혼란 스러웠습니다.하지만 '$ match 쿼리에서 집계 파이프 라인의 일부로 $를 사용할 수 없습니다.'라는 마지막 경고가 표시되지 않았습니다. 내 사과. – danidelvalle

+0

$ type 4에서 쿼리하는 방법에 대해 http://docs.mongodb.org/manual/reference/operator/query/type/? –