2015-02-03 11 views
1

MongoDb에 콜렉션이 있고 rmongodb 패키지를 사용하여 R로 데이터를 가져 오려고합니다. 내 데이터베이스에있는 날짜와 시간을 기준으로 문서의 하위 집합을 만들고 싶습니다.Rmongodb 패키지 날짜 객체

그래서 rmongodb 패키지에 정의 된 mongo.find.all 함수를 다음과 같이 사용합니다. 특정 날짜 시점 이전의 문서를 추출하려고 시도합니다.

query<-mongo.bson.from.JSON('{"Date_time":{"$lte":"2015-1-5 20:00:00"}}') 
sample<-mongo.find.all(mongo,db.coll,query) 

전혀 출력이 없습니다.

R은 날짜 변수 대신 date 오브젝트를 문자열로 간주합니다.

이 문제를 해결하는 방법은 무엇입니까?

답변

2

mongo.bson.from.list() 함수를 사용하십시오.이 함수는 R 유형을 MongoDB 유형으로 직접 변환합니다.

posix_time <- strptime(x = "2015-1-5 20:00:00", format = '%F') 
query <- mongo.bson.from.list(list("Date_time" = list("$lte" = posix_time))) 
sample <- mongo.find.all(mongo,"db.coll",query) 

또한 mongo.bson.from.list()은 JSON 구문 분석을 피하기 때문에 훨씬 빠릅니다.

P. 실제로 mongo.bson.from.JSON은 두건으로 사용합니다.

+0

Dmitriy 씨 감사합니다. 우리가 mongo.find.all 또는 mongo.find.batch 함수를 사용하여 MongoDB에서 R로 데이터를 가져올 때, 필드가 하나 이상의 문서에서 문자 값을 사용하기 때문에 필드의 원래 데이터 유형이 유지되지 않는 것으로 나타났습니다. (예 : 'null'). 이러한 필드를 가져 와서 R 데이터 프레임으로 변환하면 Character 변수로 간주됩니다. 이 "null"값을 NA로 대체하고 MongoDB에서 원래 데이터 유형을 보존하려면 어떻게해야합니까? 이러한 입력 된 기능은 read.csv 함수에서 na.strings = "null"인수를 사용하여 CSV 파일을 가져올 때 이미 사용할 수 있습니다. – user76170

+0

문제 신고서를 작성하고 https://github.com/mongosoup/rmongodb/issues에서 재현 가능한 예를 제공해주십시오. –

+0

https://github.com/mongosoup/rmongodb/issues/76에서 재현 가능한 예제를 통해 문제가보고되었습니다. - user76170 – user76170