2012-06-18 3 views
0

저는 MongoDB 데이터베이스에 Tweets를 저장하려고합니다. 필드 선택기 (http://www.mongodb.org/display/DOCS/Querying#Querying-FieldSelection)를 사용하여 사용자의 텍스트, 날짜 및 스크린 이름 만 반환하려고합니다. 단지 텍스트와 날짜를 반환하는 쿼리를 작성필드 선택을 사용하여 Mongo 셸에서 포함 된 필드를 반환하려면 어떻게해야합니까?

{ 
    "_id" : NumberLong("213686009408"), 
    "text" : "RT @Milanello: Lightning over the Donb...", 
    "created_at" : "Fri, 15 Jun 2012 17:37:38 +0000", 
    "user" : { 
     "screen_name" : "xxxxx", 
     "profile_image_url" : "http://a0.twimg.com/pro[...].jpg" 
    } 
} 

쉽게 충분하다 :

> db.abc.find({},{created_at:1,text:1}) 

나는뿐만 아니라 user.screen_name 속성을 반환하는 방법을 잘 모르겠어요?

[업데이트]하지만 경우에만, 도트 표기법이 작업을 수행 아래에 모두 답변에 따라 (나는 했음 모두 +이), 그러나,

내가 이전에 점 표기법을 사용하여 시도했고 그것이 예외가 발생했습니다 속성 이름을 ""사용합니다.

db.abc.find({},{created_at:1,text:1, user.screen_name:1}) 

을하지만이 작업을 수행합니다 :

그래서,이 작동하지 않습니다는 그러나

db.abc.find({},{created_at:1,text:1, "user.screen_name" : 1}) 

:

db.abc.find({},{created_at:1,text:1, "user.screen_name":1}) 

답변

2

당신은 질의에서와 같이 dot notation을 사용할 수 있습니다 필드가 병합되지 않으므로 결과 개체에는 여전히 user- 서브 문서가 있습니다 :

{ "_id" : NumberLong("4546545"), 
    "created_at" : "Fri, 15 Jun...", 
    "user" : { "screen_name" : "John Doe" } 
} 

그러나 코드에서이 문제를 해결하는 것이 큰 문제는 아닙니다.

+0

감사합니다 - 사용 : > db.abc.find ({}, {created_at : 1, text : 1, user.screen_name : 1}) –

2

배열 내에서 값을 쿼리하려면 도트 표기법을 사용해야합니다. 나는 유사한 문서를 만든 _id 필드를 수정하고, 성공적으로 다음과 같은 쿼리를 실행 -

> db.abc.find({},{'user.screen_name': 1}) 
{ "_id" : 1200, "user" : { "screen_name" : "xxxxx" } } 

> db.abc.find({'user.screen_name': "xxxxx"}) 
{ "_id" : 1200, "text" : "RT @Milanello: Lightning over the Donb...", "created_at" : "Fri, 15 Jun 2012 17:37:38 +0000", "user" : { "screen_name" : "xxxxx", "profile_image_url" : "http://a0.twimg.com/pro[...].jpg" } } 

고급 쿼리 here에 대한 자세한 정보] 거기를.

업데이트 : mnemosyn 이후 2 분을 게시 한 것처럼 보이기 때문에 먼저 대답을 수락하십시오.

관련 문제