楼主: kiclee
6008 2

[问答] R查询MongoDB结果集转换效率问题 [推广有奖]

  • 0关注
  • 1粉丝

等待验证会员

小学生

85%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
538 点
帖子
8
精华
0
在线时间
8 小时
注册时间
2013-12-25
最后登录
2014-2-19

楼主
kiclee 发表于 2014-1-16 20:01:37 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
是用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")               
        }
}

二维码

扫码加我 拉你入群

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

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

关键词:mongodb mongo Mon God NGO mongo mongodb

沙发
kiclee 发表于 2014-1-17 12:23:45
没有人用mongo吗?

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

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

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 20:20