[英]Converting mongo console, or RMongo query to rmongodb
我在使用RMongo时遇到麻烦,因此我正在尝试将我的工作转换为rmongodb。 从这里开始 ,我的查询在mongo控制台中如下所示:
db.final.find({},{"ids.myid":1,"org.name":1,"_id":0}).skip(0).limit(5000)
在RMongo中是这样的:
dbGetQueryForKeys(db,'final', '{}','{"ids.myid":1,"org.name":1,"_id":0}',skip=0,limit=5000)
(后者不返回值,但是Mongo控制台确实可以工作。)
我从文档中了解到,它在rmongodb中应该看起来像这样:
library(rmongodb)
mcon <- mongo.create(host="myurl:port",db="dbname")
fields = mongo.bson.buffer.create()
mongo.bson.buffer.append(fields, "ids.myid", 1L)
mongo.bson.buffer.append(fields, "org.name", 1L)
mongo.bson.buffer.append(fields, "_id", 0L)
cur <- mongo.find(mcon,"final",fields=fields, limit=5000) # query takes the default null
df <- mongo.cursor.to.data.frame(cur)
但是,我得到:
data frame with 0 columns and 0 rows
我的原始查询到rmongodb的正确翻译是什么?
我知道我的连接有效,因为:
mongo.get.databases(mcon)
工作并显示正确的数据库。 但是,我如何调用集合似乎有问题,因为
mongo.find.one(mcon,"final")
返回NULL。 尽管db.final.findOne()
工作正常!
您的集合的名称空间(ns)错误。 您的数据库名称丢失。 尝试这个:
cur <- mongo.find(mcon,"dbname.final",fields=fields, limit=5000)
和
mongo.find.one(mcon,"dbname.final")
我也有我的缓冲区构造错误。
fields = mongo.bson.buffer.create()
mongo.bson.buffer.append(fields, "ids.myid", 1L)
mongo.bson.buffer.append(fields, "org.name", 1L)
mongo.bson.buffer.append(fields, "_id", 0L)
本来应该
buf = mongo.bson.buffer.create()
mongo.bson.buffer.append(buf, "ids.myid", 1L)
mongo.bson.buffer.append(buf, "org.name", 1L)
mongo.bson.buffer.append(buf, "_id", 0L)
fields <- mongo.bson.from.buffer(buf)
通过文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.