繁体   English   中英

将mongo控制台或RMongo查询转换为rmongodb

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM