R和MongoDB:数组存储为一个对象,索引作为键

R和MongoDB:数组存储为一个对象,索引作为键,r,mongodb,rmongodb,R,Mongodb,Rmongodb,我正在从一个提供程序中提取JSON数据,并使用R将其添加到mongodb中。我计划将来使用R和Shiny来显示数据。我现在遇到了一个问题,我将数据放入一个JSON对象并将其插入MongoDB。它添加了对象,但将数据放置在比我真正想要的位置低一级的位置 以下是数据的输入方式: prettify(jsonKill) [ { "id" : { "timestamp" : 1409785080, "machine" : 119669

我正在从一个提供程序中提取JSON数据,并使用R将其添加到mongodb中。我计划将来使用R和Shiny来显示数据。我现在遇到了一个问题,我将数据放入一个JSON对象并将其插入MongoDB。它添加了对象,但将数据放置在比我真正想要的位置低一级的位置

以下是数据的输入方式:

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)
}

我的目标是执行db.collection.find{id.pid:$gt1}或使用mongo.index.createm,ns,{id.pid},mongo.index.unique的索引。在这方面,不一定是id键,而是一个或多个没有显示在这里的键。

原因是rmongodb当前有一个缺陷,它会妨碍数组的使用

R:

为此,我开发了一个软件包,为该问题提供了解决方案:

R:

您可以在我的网站上找到有关此软件包以及使用MongoDB with R的更多信息:


请记住,MongoDB不能存储裸数组(仅对象),而裸数组本身可能包含数组。

原因是rmongodb当前存在一个缺陷,会妨碍数组的使用

R:

为此,我开发了一个软件包,为该问题提供了解决方案:

R:

您可以在我的网站上找到有关此软件包以及使用MongoDB with R的更多信息:


请记住,MongoDB不能存储裸数组(仅对象),而裸数组本身可能包含数组。

现在开箱即用。mongo.bson.from.list现在可以将未命名列表转换为数组。

现在开箱即用。mongo.bson.from.list现在可以将未命名列表转换为数组。

服务是否可能返回json文档数组而不是对象?它有多个id字段吗?请提供完整的响应,只保留实际冗余的部分。服务返回一个对象数组。以前,当我插入对象时,整个对象将作为一个大对象进入。我只是希望有一些不必通过.key.key引用的对象。我的for循环解决了这一问题,将其拆分并分别插入每个对象及其所有子对象,但我仍然存在“d”字段妨碍查询/创建的问题。服务是否可能返回json文档数组而不是对象?它有多个id字段吗?请提供完整的响应,只保留实际冗余的部分。服务返回一个对象数组。以前,当我插入对象时,整个对象将作为一个大对象进入。我只是希望有一些不必通过.key.key引用的对象。我的for循环解决了这一问题,将其拆分,并分别插入每个对象及其所有子对象,但我仍然面临着d字段妨碍查询/创建的问题。
{
    "_id" : ObjectId("54081299d5ec83d046d05766"),
    "1" : {
        "id" : {
            "timestamp" : 1409756219,
            "machine" : 2364985,
            "pid" : 9076,
            "increment" : 1079972,
            "creationTime" : "2014-09-03T14:56:59Z"
        },
    ...
}
library(rmongodb)

m <- mongo.create()

json <- '{"array":[{"a":1},{"b":2}]}'
bson <- mongo.bson.from.JSON(json)

mongo.insert(m, "database.collection", bson)
> db.collection.find().pretty()
{
        "_id" : ObjectId("540825d68a271f234b6d62d2"),
        "array" : {
                "1" : {
                        "a" : 1
                },
                "2" : {
                        "b" : 2
                }
        }
}
library(devtools)
install_github("joyofdata/rmongodbHelper")
library(rmongodbHelper)

json <- '{"array":[{"a":1},{"b":2}]}'
bson <- rmongodbHelper::json_to_bson(json)

mongo.insert(m, "database.collection", bson)
> db.collection.find().pretty()
{
        "_id" : ObjectId("540826738a271f234b6d62d4"),
        "array" : [
                {
                        "a" : 1
                },
                {
                        "b" : 2
                }
        ]
}