2013-10-24 2 views
2

Я следую соглашениям от http://docs.mongodb.org/manual/reference/method/db.collection.insert/
для отправки партии нескольких документов за один вызов RMongo :: dbInsertDocument.Как отправить несколько документов с помощью RMongo

data=data.frame(A=c(1,2),B=c(3,4)) 
L=lapply(split(data,rownames(data)),as.list) 
names(L)=NULL 
dataJSON = toJSON(L) 
cat(dataJSON) 

, который дает следующий результат:

[ 
{ 
    "A":1, 
    "B":3 
}, 
{ 
    "A":2, 
    "B":4 
} 
] 

Тогда

dbInsertDocument(rmongo.object=myRmongo.object, collection=myCollection, doc=dataJSON) 

возвращает следующую ошибку:

Error in ls(envir = envir, all.names = private) : 
invalid 'envir' argument 

Обратите внимание, что, если я заменю

L = L[[1] 

Тогда

cat(dataJSON) 

дает следующий результат:

{ 
"A":1, 
"B":3 
} 

и тот же вызов dbInsertDocument работает без ошибок (и данные действительно передается в базу данных)

+0

Какая ошибка выводится? Вы можете распечатать свой '' dataJSON'', чтобы мы могли его проверить? –

+0

@tommychheng Я подробно изложил свой вопрос – RockScience

ответ

0

Кто-нибудь понял это? Мне бы очень хотелось, чтобы это было лучше, но теперь я просто перебираю список (не идеальный).

data=data.frame(A=c(1,2),B=c(3,4)) 
L=lapply(split(data,rownames(data)),as.list) 
names(L)=NULL 
for (i in 1:NROW(L)) { 
    dataJSON = toJSON(L[[i]]) 
    output <- dbInsertDocument(mongo, "test_data7", dataJSON) 
} 
+0

FYI Я подал вопрос о github RMongo: https://github.com/tc/RMongo/issues/22 – RockScience

Смежные вопросы