私はMongoDBからデータを引き出すためにRmongoパッケージを使用しています。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\"}"
データフレームは、手動で使用して再作成することができます。
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)
私はこの出力をしたいと思いますより進歩を遂げようとしたdbGetQuery関数から直接cData列を出力するためにdクエリを実行しますが、私は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部分を再現できれば十分です。 –