2011-12-28 10 views
3

MongoDB의 새로운 파이프 라인 쿼리를 시도하고 있으므로 아래 쿼리를 실행하려고합니다.

{ 
aggregate: 'Posts', 
pipeline: [ 
    { $unwind: '$Comments'}, 
    { $match: {'$Comments.Owner': 'Harry' }}, 
    {$group: { 
     '_id': '$Comments._id' 
     } 
    } 
    ] 
} 

그리고 아무것도 일치하지 않아서 빈 결과가 반환됩니다. 나는 문제가 $ match 명령에있을 수 있다고 생각한다. 점으로 구분 된 표기법을 사용하고 있습니다. 소유자가 정확히 맞는지 확실하지 않습니다. 왜이 쿼리가 '해리'인 Ownders를 반환하지 않는지. 나는 db에 존재한다고 확신한다.

+0

은 어떤 생각을 가지고 또는 추측? Post의 "Title"속성에 $ match 명령을 사용할 수 있으므로 "$ Comments.Owner"구문에 문제가있는 것 같습니다. – AnyOne

+1

컬렉션에 샘플 문서를 게시하여 쿼리가 어떻게 작동하는지 더 잘 이해할 수 있습니까? 감사. – mpobrien

답변

-1

MongoDB 2.2에서 집계 프레임 워크와 동일한 문제점이 발생합니다.

$match 하위 문서에 대해 작동하지 않았습니다 (하지만 MongoDB를 배우기 때문에 잘못 처리 할 수 ​​있습니다).

나는 (이 경우 Comments) 하위 문서를 제거하기 위해 별도의 투사를 추가 :

{ 
aggregate: 'Posts', 
pipeline: [ 
    { $unwind: '$Comments'}, 
    { $project: { 
     comment_id: "$Comments._id", 
     comment_owner: "$Comments.Owner" 
    }}, 
    { $match: {'$comment_Owner': 'Harry' }}, 
    {$group: { 
     '_id': '$comment_id' 
     } 
    } 
    ] 
} 
8

당신은 $match 필드 이름의 $ 접두사를 사용하지 마십시오.

이 시도 :

{ 
    aggregate: 'Posts', 
    pipeline: [ 
    { $unwind: '$Comments'}, 
    { $match: {'Comments.Owner': 'Harry' }}, 
    { $group: { 
     '_id': '$Comments._id' 
    }} 
    ] 
} 
+0

감사합니다 사람이 내 생명을 구했어! – webmaster

+0

생명을 구하는 사람! 감사 –