全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5971 2
2014-01-16
是用r连接mongodb后,如果查询的数据量很大(查询很快),但在转换时速度很慢,需要很长时间。
所以几个问题:
1.是否在r中必须转换为r的list类型?还是直接可以使用mongo类型?
2.有什么好的方法可以避免类型转换,或者转为较便捷快速的类型?
3.r从mongo中读取数据必须要使用cursor吗?还是有别的快速方法?最后得到rlist变量的时间大约3-4秒,很长

有经验的DX给点建议?

示例代码如下:library(rmongodb)
host <- "127.0.0.1"
username <- "testuser"
password <- "123"
db <- "testdb"
mongo <- mongo.create(host=host , db=db, username=username, password=password)

rlist <- list() #结果集

if(mongo.is.connected(mongo))
{
        
        ns = "testdb.datas"
        
        #查询
        buf <- mongo.bson.buffer.create()
        mongo.bson.buffer.append(buf, "S1", 1)        #这里是int类型,所以1没有引号
        query <- mongo.bson.from.buffer(buf)
        
        #查询记录数
        count <- mongo.count(mongo, ns, query)
        
        #查询一条记录
        onerecord = mongo.find.one(mongo, ns, query)
        print(onerecord)
        
        #查询结果集        
        cursor <- mongo.find(mongo, ns, query)
        
        while (mongo.cursor.next(cursor)) {
                val <- mongo.cursor.value(cursor)
                rlist[[length(rlist)+1]] <- mongo.bson.value(val, "S1")               
        }
}

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-1-17 12:23:45
没有人用mongo吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-4-16 14:50:36
lz我刚开始摸rmongdb三天。。。所以只能交流
你觉得crusor效率跟mongo.find.all比如何?我在用后者。当然,没有大规模数据试过。

虽然mongo是key-value的,但是我只打算把它当传统数据库用,bson转换成list再转dataframe效率确实不高,
但是暂无其他好办法。
摸索中,留个坑,希望以后能填上。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群