2016-10-31 5 views
0

다음과 같은 형식으로 mongoDb에 문서가 있습니다. 인쇄 할 태그 키의 값만 원합니다. 나는 몇 가지 방법을 시도했지만 그들 중 누구도 필요한 출력 형식으로 울부 짖는 소리mongoDB에서 특정 키의 모든 값 가져 오기

76 
77 
78 
76 
77 
78 
76 
77 
78 

나는 또한 나에게 다른 모든 값을 반환하려 코드 표시됩니다

{ 
id = "my_id1" 
    tags: 
     { 
     'tag1':76, 
     'tag2':77, 
     'tag3':78 
     }, 
    category: "movie", 
}, 
{ 
    id = "my_id2" 
    tags: 
     { 
     'tag1':76, 
     'tag2':77, 
     'tag3':78 
     }, 
    category: "tv", 
}, 
{ 
    id = "my_id3" 
    tags: 
     { 
     'tag1':76, 
     'tag2':77, 
     'tag3':78 
     }, 
    category: "movie", 
} 

을 일했다.

+0

스키마 디자인이 좋지 않기 때문에'map_reduce'를 사용해야합니다. – styvane

답변

1

{ "tags" : { "tag1" : 76, "tag2" : 77, "tag3" : 78 } } 
{ "tags" : { "tag1" : 76, "tag2" : 77, "tag3" : 78 } } 
{ "tags" : { "tag1" : 76, "tag2" : 77, "tag3" : 78 } } 
아래와 같이 스키마는이 쿼리가 결과를 얻을 것이다

db.collection.aggregate([{$project:{"_id":false,"tags.tag1":1, "tags.tag2":1, "tags.tag3":1}}]) 

아래의 쿼리를 사용

{ 
     "_id" : ObjectId("581707cddb3c8c85a6745d20"), 
     "id" : "my_id1", 
     "tags" : { 
       "tag1" : 76, 
       "tag2" : 77, 
       "tag3" : 78 
     }, 
     "category" : "movie" 
} 
{ 
     "_id" : ObjectId("581707f7db3c8c85a6745d21"), 
     "id" : "my_id2", 
     "tags" : { 
       "tag1" : 76, 
       "tag2" : 77, 
       "tag3" : 78 
     }, 
     "category" : "tv" 
} 
{ 
     "_id" : ObjectId("58170a23db3c8c85a6745d22"), 
     "id" : "my_id3", 
     "tags" : { 
       "tag1" : 76, 
       "tag2" : 77, 
       "tag3" : 78 
     }, 
     "category" : "movie" 
} 

db.collection.find().count() ---> 3 

그런 다음 태그 값을 검색 할 수 있습니다 다음과 같이 인 경우

이 결과를 얻는 데 사용한 스키마가 스키마와 일치하지 않으면 modif가 필요합니다. y 스키마에 맞는 쿼리.

관련 문제