2013-01-23 6 views
1

RMongo를 사용하여 R에서 mongo 데이터베이스를 쿼리하고 중첩 된 문서의 값을 반환하려고합니다.RMongo dbGetQueryForKeys(), "키"의 구조는 무엇이며 키를 하위 키로 만드는 방법은 무엇입니까?

db = mongo 
collection = 'test_data' 
query = '{"foo": "bar"}' 
keys = 'Specify a set of keys to return.' 

'{"foo":1}'에서 1 무엇 ... 인수가 있습니다

output <- dbGetQueryForKeys(mongo, 'test_data', '{"foo": "bar"}', '{"foo":1}') 

:

RMongo에 대한 문서를 통해 찾고, 나는 다음과 같은 쿼리를 이해? 이 키 세트의 구조는 무엇입니까? this blog post에 대해 확인, 내가 같은 형식 발견

결과 < - dbGetQueryForKeys (몽고, "항목", "{ '게시 _'{ '$ GTE': '2011-04-01', '$의 LT ':'2011-05-01 '}} ","{'publish_date ': 1,'rank ': 1}')

키가 값 1을 필요로합니까?

중첩 된 문서의 키는 어떻게 얻을 수 있습니까? 내가 중첩 된 키 위해 뭔가 같은 ...

output <- dbGetQueryForKeys(mongo, 'test_data', '{"foo": "bar"}', '{"foo1.foo2.foo3.foo4":1,"foo1.foo2.foo3.bar4":1}') 

를 원한다면, 나는 현재 output[,2]뿐만보다는하는 looooong 문자열 뭔가 같은 더 ...

     X_id 
1 50fabd42a29d6013864fb9d7 
                       foo1 
1 { "foo2" : { "foo3" : { "foo4" : "090909" , "bar4" : "1"}}} 

을 ... 돌아 오는거야 키 foo4 및 bar4와 연관된 값에 대한 두 개의 개별 변수 ("090909", "1")입니다.

답변

0

'{ "foo": 1}의 1은 무엇입니까? 이 키 세트의 구조는 무엇입니까?

이 키들은 MongoDB에서 read operations을 반환하는 query projections입니다. "1"값은 특정 필드를 포함하는 것을 의미하고 "0"은 제외됩니다. 기본 동작은 모든 필드를 투영에 포함시키는 것입니다.

중첩 된 문서의 키는 어떻게 받습니까?

중첩 된 키의 경우 현재 더 많은 것을 반환하고 있습니다 ... 1 { "foo2": { "foo4": "090909", "bar4": "1"}}} ... 여기서 foo4 키와 연관된 값에 대한 개별 변수 과 bar4 ("090909", "1")가 아닌, output [, 2]가 looooong 문자열입니다.

RMongo 드라이버는 포함 하이라이팅을 포함한 데이터를 반환합니다.

넌 &가 RMongo dbAggregate() MongoDB의 명령에 Aggregation Framework 2.2의 일부인 $project 연산자를 사용하여 결과를 출력 평탄화 바꿀 수있다.

0

R의 일부 유형의 다운 스트림 처리를 위해 중첩 된 오브젝트에서 값을 추출하는 것이 최종 목표 인 경우 여기에 표시됩니다. 집계 파이프 라인을 구축 할 필요가없고 문제에 대한 간단한 해결책입니다.중첩 된 구조에 깊이 들어가 bar4에 직접 액세스하는 대신, 참조한 긴 문자열을 제공 할 객체의 최상위 레벨을 추출하십시오.

library(jsonlite) 
foo1 <- fromJSON(output$foo1) 
bar4 <- foo1$foo2$foo3$bar4 
: 출력이 data.frame이기 때문에

output <- dbGetQueryForKeys(mongo, 'test_data', '{"foo": "bar"}', '{"foo1.foo2.foo3.foo4":1,"foo1":1}') 

, 당신은 당신의 데이터를 얻을 수있는 'jsonlite'라이브러리를 사용할 수 있습니다