나는 Rongongo 패키지를 사용하여 MongoDB에서 데이터를 가져 왔습니다.R : Rmongo 출력을 데이터 프레임으로 변환
library(Rmongo)
mongo <- mongoDbConnect("cmdbData", host="XX-MONGODB-02", port=27017)
data_users <- dbGetQuery(mongo, 'computers', '{}')
는 가져온 데이터는 다음과 같습니다
update_bol key cData
1 delete NA "{ \"name\" : \"name1\" , \"domain\" : \"xx.yy.dk\"}"
2 update NA "{ \"name\" : \"name2\" , \"domain\" : \"xx.yy.dk\"}"
3 update NA "{ \"name\" : \"name3\" , \"domain\" : \"xx.yy.dk\"}"
4 update NA "{ \"name\" : \"null\" , \"domain\" : \"xx.yy.dk\"}"
5 update NA "{ \"name\" : \"name5\" , \"domain\" : \"zz.yy.dk\"}"
6 delete NA "{ \"name\" : \"name6\" , \"domain\" : \"zz.yy.dk\"}"
dataframe 수동으로 사용하여 재 작성 할 수 있습니다
name domain
1 name1 xx.yy.dk
2 name2 xx.yy.dk
3 name3 xx.yy.dk
4 NULL xx.yy.dk
5 name5 zz.yy.dk
6 name6 zz.yy.dk
I :
data.frame(update_bol = c("delete", "update", "update", "update", "update", "delete"),
key = c(NA, NA, NA, NA, NA, NA),
cData = c("{ \"name\" : \"name1\" , \"domain\" : \"xx.yy.dk\"}", "{ \"name\" : \"name2\" , \"domain\" : \"xx.yy.dk\"}", "{ \"name\" : \"name3\" , \"domain\" : \"xx.yy.dk\"}", "{ \"name\" : \"null\" , \"domain\" : \"xx.yy.dk\"}", "{ \"name\" : \"name5\" , \"domain\" : \"zz.yy.dk\"}", "{ \"name\" : \"name6\" , \"domain\" : \"zz.yy.dk\"}"), stringsAsFactors = FALSE)
나는이 출력을 싶습니다 더 진전을 시도했다. d 쿼리를 사용하여 dbGetQuery 함수에서 직접 cData 열을 출력하지만 MongoDB를 처음 사용하므로 적절한 쿼리를 찾을 수 없습니다.
cData의 형식은 JSON과 비슷하므로 "jsonlite"패키지를 사용하여 열을 추출하려고했지만 그 중 하나를 만들지 못했습니다. 의견 있으십니까?
library(jsonlite)
library(tidyverse)
fromJSON(data_users$ciData[1]) %>% as.data.frame
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, :
arguments imply differing number of rows: 1, 0
붙여 넣기가 쉬운 예제를 제공 할 수 있습니까? –
방금 data.frame을 복사하여 붙여 넣기 쉽게 추가했지만 데이터베이스에 액세스 할 수 없으므로 mongoDB를 쿼리하는 단계에서 복제 할 수 없습니다. –
우리는 데이터베이스에 액세스 할 필요가 없습니다. R 부분을 재현 할 수 있다면 충분할 것입니다. –