2017-03-14 1 views
0

안녕하세요. 문서를 보았습니다. https://docs.mongodb.com/manual/reference/operator/aggregation/size/ 및 저자 속성이있는 개체가 있고 그 안에 여러 작성자가 있습니다. 일괄 배열을 사용하려면 내부에서 크기를 사용해야합니다. 나는 (db.posts.find 치면 꽤() 나는이 얻을)mongodb 배열 크기 집계 크기가 실패했습니다.

:

{ 
 
\t "_id" : ObjectId("58c7e35a8a00f209be819771"), 
 
\t "allReviewsLink" : "link somewhere", 
 
\t "totalReviewCount" : "200" 
 
} 
 
{ 
 
    \t "_id" : ObjectId("58c7e515be41d40a39954a38"), 
 
    \t "authors" : [ 
 
    \t \t "Linda", 
 
    \t \t "Benn", 
 
    \t \t "Carolyn" 
 
    \t ] 
 
    }

을 그리고 이것은 내가 t이다. 집계하지만 오류가 발생합니다

db.posts.aggregate( [  {$size: {"$authors"    }   }   ])

게시물 내 컬렉션이며, 나는 다음과 같은 오류 얻을 : 구문 에러를 :없는 : 성공없이 에드 : 1 : 63

+0

'$ project' 단계와 함께'$ size' 연산자를 사용하십시오. 'db.posts.aggregate ([{$ project : {size : {$ size : "$ authors"}}}])와 같은 것' – Veeram

+0

필자는'authors'와 같은 속성 앞에'$' – JLewkovich

+0

제 질문을 편집했습니다. 명확하게 설명하는 것이 도움이 될 수 있습니다. – Defoe

답변

1

두 가지 방법으로 수행 할 수 있습니다.

이 쿼리는 크기가 0

db.posts.aggregate([ {$project:{ size: {$size: {$ifNull:["$authors", []] }}}} ]) 

에 존재하지 않는 authors 값을 설정합니다 또는 대안 당신은 $match 먼저 다음 계산 크기를 사용하여 문서를 필터링 할 수 있습니다.

db.posts.aggregate([ {$match:{authors:{$exists:true}}},{$project:{ size: {$size:"$authors" }}} ]) 
0

사용 $ 속성 아이디 @ (쉘) 후 집계 된 프로젝트,

  db.posts.aggregate([ {$project:{ size: {$size: {$ifNull:["$authors", []] }}}} ]) 
+0

오류 : 명령이 실패했습니다 : {..... – Defoe

+0

내 질문을 편집했는데 명확히하는 것이 도움이 될 수 있습니다. – Defoe

+0

위의 명령은 크기를 반환해야합니다 : 3, whats your expected output? – radhakrishnan