2011-11-19 2 views

답변

0

, 당신은 전체 comments 필드의 하위 집합을 반환 할 $slice 연산자를 사용할 수 있습니다

test> db.foo.save({name: "hello", comments: [1, 2, 3, 4, 5]}) 
test> db.foo.find({}, {comments: {$slice: 3}}) 
{ "_id" : ObjectId("4ec7d1c8e72da9b6f31e2528"), "name" : "hello", "comments" : [ 1, 2, 3 ] } 
test> db.foo.find({}, {comments: {$slice: -3}}) 
{ "_id" : ObjectId("4ec7d1c8e72da9b6f31e2528"), "name" : "hello", "comments" : [ 3, 4, 5 ] } 

반환 된 필드를 제어하는 ​​방법에 대한 자세한 내용은 http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields

+0

단일 문서뿐만 아니라 컬렉션의 전체 문서에서 최근 코멘트를 얻는 것을 의미합니다. – alice

+0

아, 알겠습니다. 이 경우 @RameshVel이 제시하는 것처럼 데이터를 다르게 모델링해야 할 수도 있고 Map-Reduce를 사용하여 주석을 별도의 콜렉션으로 추출하고이를 쿼리 할 수도 있습니다. – dcrosta

+0

블로그의 최근 댓글을 표시하는 것과 같은 매우 일반적인 사용 사례입니다. 나는 관계형 데이터베이스를 놓치기 시작했다. ( – alice

-1

포함 된 문서에서 항목을 부분적으로 선택할 수있는 방법이 없습니다. 그것이 문서의 전체 배열을 반환합니다 상관없이. 응용 프로그램 코드에서 필터를 수행해야합니다. 그게 유일한 방법이야.

하지만 댓글 용으로 별도의 컬렉션을 준비하는 것이 좋습니다. 그렇게하면 & 세트를 건너 뛸 수 있습니다.

+0

-1'$ slice' 연산자를 사용하여 배열 내의 임베디드 문서의 특정 하위 집합을 검색하고 일반 필드 선택을 사용하여 배열이 아닌 특정 임베디드 문서 집합을 반환 할 수 있습니다. – dcrosta

+0

오, 내 나쁜 .. 그 하나 싶었 : ( – RameshVel