プロバイダーから JSON データを取得し、R を使用して mongodb に追加しています。将来的には R と Shiny を使用してデータを表示する予定です。現在、データを JSON オブジェクトに配置して MongoDB に挿入するという問題が発生しています。オブジェクトを追加しますが、データを実際に必要な場所よりも 1 レベル下に配置します。
データは次のように入力されます。
prettify(jsonKill)
[
{
"id" : {
"timestamp" : 1409785080,
"machine" : 11966932,
"pid" : 3144,
"increment" : 11720074,
"creationTime" : "2014-09-03T22:58:00Z"
},
...
]
これをmongodbに追加するコードは次のとおりです。
library('jsonlite')
library('rmongodb')
m <- mongo.create()
ns <- 'database.collection'
killObject <- fromJSON('http://omitted.because.nda:8000/api/omit')
x <- nrow(killObject)
for(i in 1:x){
jsonKill <- toJSON(killObject[i:i,])
bson <- mongo.bson.from.JSON(jsonKill)
mongo.insert(m, ns, bson)
paste("Inserting Record: ", i)
}
cursor <- mongo.find(m, ns, bson)
while(mongo.cursor.next(cursor)){
value <- mongo.cursor.value(cursor)
list <- mongo.bson.to.list(value)
str(list)
}
結果は次のとおりです。
{
"_id" : ObjectId("54081299d5ec83d046d05766"),
"1" : {
"id" : {
"timestamp" : 1409756219,
"machine" : 2364985,
"pid" : 9076,
"increment" : 1079972,
"creationTime" : "2014-09-03T14:56:59Z"
},
...
}
私が目指しているのは、必ずしもキーではなく、ここに表示されていないキーの 1 つまたは複数を実行するか、その趣旨db.collection.find({"id.pid" : $gt1})
のインデックスを作成することです。mongo.index.create(m, ns, {"id.pid"}, mongo.index.unique)
id