2014-06-18 3 views
-1

전체 문서가 아니라 단지 키와 값을 가져 오기 위해 찾기 문장을 만드는 데 어려움을 겪고 있습니다. 이 문서는 다음과 같습니다. 나는 코드 기준에 따라 이름과 코드 만 검색하려고한다. 예 : 나는 {"code" : { $in : ["js" , "dns"}} , {"name"}} 같은 것을 배치 할 때 나는 ... 같은 것을받을 내 말은문서 내부의 값 찾기

[ 
{ 
     "code" : "js", 
     "name" : "Java Script", 
     "skillType" : "programming" 
    }, 
    { 
     "code" : "dns", 
     "name" : "DNS", 
     "skillType" : "networking" 
    } 
] 

싶습니다 : 문서의 한 부분이 아닌 전체 문서를 포함한 배열 - 내 기준과 일치합니다. 이 기본적인 필요를 찾기 위해 올바른 방법은 무엇입니까?

db.collectionname.aggregate([ 
          {$unwind:"$skillSet"}, 
          {$match:{"skillSet.code":{$in:["dns","js"]}}}, 
          {$project:{skillSet:1, _id:0}}, 
          {$group: { _id: null, skill: { $push: "$$ROOT" } }} 
          ]) 

그리고 결과 : 샘플 데이터를 사용하여,

집계 명령을 : 나는 당신이 아주 가까이 얻을 수 집계 프레임 워크를 사용하여 생각

{ 
"_id" : ObjectId("53a1c40c9b97ebe1e5ad659e"), 
"type" : "SkillSets", 
"skillSet" : [ 
    { 
     "code" : "js", 
     "name" : "Java Script", 
     "skillType" : "programming" 
    }, 
    { 
     "code" : "mong", 
     "name" : "MongoDB", 
     "skillType" : "database" 
    }, 
    { 
     "code" : "dns", 
     "name" : "DNS", 
     "skillType" : "networking" 
    } 
] 
} 

답변

0

: 아래

는 전체 문서입니다 :

{ 
    "_id" : null, 
    "skill" : [ 
      {"skillSet" : { "code" : "js", "name" : "Java Script", "skillType" : "programming" } }, 
      {"skillSet" : { "code" : "dns", "name" : "DNS", "skillType" : "networking" } } 
      ] 
} 

전체 데이터 세트를 조금만 실험하여 원하는 결과를 얻을 수 있습니다. 여기에 집계 프레임 워크에 대한 자세한 내용 :

http://docs.mongodb.org/manual/core/aggregation-introduction/