2017-03-18 5 views
0

다음 문서가 MongoDB에 있습니다.MongoDB에 하위 문서를 투영 할 수 없습니다.

실제 출력 :

> db.test.findOne({},{_id:0,abc:1}) 
{ "abc" : "{ \"d\" : 4.864, \"t\" : 16, \"g\" : 5 }" } 

내가 루트까지 필드 abc.d을 가지고 싶어하지만, 다음과 같은 방법이 작동하지 않습니다.

> db.test.aggregate([{$project:{"_id":0,"abc.d":1}}]) 

> db.test.aggregate([{$project:{"_id":0,abcd:"$abc.d"}}]) 

원본 하위 문서에 추가 인용 부호가 있다는 사실과 관련이 있습니까?

+0

"abc"의 값이 '하위 문서'가 아니라 JSON 개체가 포함 된 문자열 인 것으로 알고 있습니다. – AlexDenisov

답변

0

문서에서 abc은 하위 문서가 아닙니다. abc doc의 가치를 따옴표로 묶는 것은 json 문자열처럼 만들었습니다. 하위 문서로 저장하기 위해

, 당신이 좋아 보관해야합니다

{ 
    "abc" : { 
    "d" : 4.864, 
    "t" : 16, 
    "g" : 5 
    } 
} 

을 이제, 아래의 집계 프로젝션 작동합니다 :

db.test.aggregate([{$project:{"_id":0,abcd:"$abc.d"}}]) 

결과 :

{ "abcd" : 4.864 } 
+0

이 통찰력에 감사드립니다. 이 문서는 실제로 액세스 할 수없는 다른 mongo 데이터베이스에서 내보냈습니다. Json 문자열을 하위 문서로 투영하는 방법이 있습니까? –

관련 문제