Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R Mongolite未将带有列表列的数据帧正确插入Mongo DB_R_Json_Mongodb_Mongolite - Fatal编程技术网

R Mongolite未将带有列表列的数据帧正确插入Mongo DB

R Mongolite未将带有列表列的数据帧正确插入Mongo DB,r,json,mongodb,mongolite,R,Json,Mongodb,Mongolite,我将给出一个简短的、可重复的例子,说明我遇到的一个问题,涉及将R中的数据插入mongo数据库。这很有挑战性,因为正如您将看到的,我有一个嵌套的数据列。修复这一问题对我的数据库至关重要,我认为这也是其他人可能遇到的问题 我的数据: my.data <- structure(list(`_id` = c(10138L, 9466L, 9390L), firstName = c("Alex", "Quincy", "Steven"), lastName = c("Abrines", "Acy",

我将给出一个简短的、可重复的例子,说明我遇到的一个问题,涉及将R中的数据插入mongo数据库。这很有挑战性,因为正如您将看到的,我有一个嵌套的数据列。修复这一问题对我的数据库至关重要,我认为这也是其他人可能遇到的问题

我的数据:

my.data <- structure(list(`_id` = c(10138L, 9466L, 9390L), firstName = c("Alex", "Quincy", "Steven"), lastName = c("Abrines", "Acy", "Adams"), 
    birthCity = c("Palma de Mallorca", "Tyler, TX", "Rotorua"
    ), birthCountry = c("Spain", "USA", "New Zealand")), row.names = c(NA, 
3L), class = "data.frame")

my.data
> nba_players
    _id firstName lastName         birthCity birthCountry
1 10138      Alex  Abrines Palma de Mallorca        Spain
2  9466    Quincy      Acy         Tyler, TX          USA
3  9390    Steven    Adams           Rotorua  New Zealand

inner.df <- structure(list(jerseyNumber = 40L, weight = 240L, age = 21L), class = "data.frame", row.names = 485L)

num.vector <- c(1,3,5,7)
以下是我的结果(显示自Robo 3T):

我对此非常熟悉,但出于某种原因,
allmonths
是一个长度为1的数组,而不是它自己的对象。如果
allmonths
是一个具有4个字段的对象,其值与标记为[0]的对象的值完全相同,那么这会更好


有人看到我的尝试有什么问题吗。我确信这是其他人在使用R中的嵌套对象时可能遇到的问题!非常感谢您的帮助

要获取对象
{}
您的
所有月份
需要是
data.frame
类型的列,而不是
列表

以你为例

库(dplyr)

my.data hero是一个轻描淡写的说法。一般来说,在使用Mongorite插入mongodb时,我是否应该避免使用列表?@Canovice-“在插入mongodb时,我是否应该避免使用列表”-这在很大程度上取决于您的数据结构,我没有确定的答案。列表(因此JSON数组)当然有自己的位置。此外,我添加了一个“aside”,我使用它并发现它很有用。我以前和这里都尝试过aside,但有时尝试通过计算创建JSON字符串也很困难。aside建议非常有用!荣誉
# add a list of the numbers to inner df
inner.df$shotIDs = list(num.vector)  

# create allmonths column (name of the row where inner.df's will be placed)  
my.data <- my.data %>%
  dplyr::mutate(allmonths = NA)

# convert allmonths into a column of class == list
my.data$allmonths[1] = list(placeholder = NA)

# For EACH row in my main my.data dataframe, add the inner.df to the allmonths column/key
for(i in 1:nrow(my.data)) {
  my.data$allmonths[[i]] <- inner.df
}

# Write this to my mongo db
con <- mongolite::mongo(collection = 'mycoll', db = 'mydb', url = "myurl")
con$insert(my.data) # this is not a good way to update a db
my.data$allmonths <- inner.df[rep(1,3), ]