我想从R获取MongoDB查询
有了mongoshell,我会查询:
db.user.find({age:{$gt:21}})
Run Code Online (Sandbox Code Playgroud)
但是,在R-Mongo中,我还没有找到如何描述这个查询.
谢谢
有没有办法在 RMongo 中使用 ObjectId 进行查询?
就像是:
results <- dbGetQuery(mongo, "users", "{'_id': 'ObjectId('5158ce108b481836aee879f8')'}")
也许通过导入 bson 库?
我想知道连接MongoDB rmongodb与RMongo包之间的主要区别是什么R.这两个包的优点和缺点是什么?
我正在使用这个dbGetQueryForKeys函数(我在这里学到的),并且似乎没有得到正确的返回值---它收集正确的键,但值都是NA.
这是我在mongo控制台中的查询,它产生了我所期望的:
db.final.find({},{"ids.myid":1,"org.name":1,"_id":0}).skip(0).limit(5000)
Run Code Online (Sandbox Code Playgroud)
这产生了......的列表
{"ids" : {"myid": "123"}, "org": {"name": "Fred"}},
Run Code Online (Sandbox Code Playgroud)
但是,相当于RMongo:
dbGetQueryForKeys(db,'final', '{}','{"ids.myid":1,"org.name":1,"_id":0}',skip=0,limit=5000)
Run Code Online (Sandbox Code Playgroud)
产生
ids.myid org.name X_id
1 NA NA NA
2 NA NA NA
3 NA NA NA
Run Code Online (Sandbox Code Playgroud)
有几个问题:
但它确实/省略了/所有其余的键,所以它在某种程度上清楚地识别命令,只是为这些返回错误的值.
现在,文档说明了这一点:
The output is a data.frame object
and will work properly only if the mongoDB collection contains
primitive data types. It may not work properly if there are any
embedded documents or arrays.
Run Code Online (Sandbox Code Playgroud)
这似乎是我查询嵌套变量的可能问题.但是,这些嵌套的返回值本身是单数,ids.myid和org.name都是字符串而不是数组.不过,情况确实如此吗?RMongo只适用于没有任何嵌套的完全平坦的收藏?
我目前正在使用RMongo包将数据拉入R. 我想在此时指定应该在我的R会话中提取的日期范围
library('RMongo')
#Connect to the database
mongo <- mongoDbConnect('db')
#results from dates.
result <- dbGetQuery(mongo, 'statsdb', '<query>', 0,200000)
Where my <query> is
{ "createdAt" : { "$gte" : ISODate("2012-12-01T00:00:00Z"), "$lt" : ISODate("2013-01-01T00:00:00Z") } }
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Error in .jcall(rmongo.object@javaMongo, "S", "dbGetQuery", collection, : com.mongodb.util.JSONParseException:
我是否需要使用RMongo包在R中传递mongodb ISODates?
我在R中有一个数据框,我试图将数据帧的每一行批量插入MongoDB中的单独文档.我能做的最接近的是使用以下脚本创建一个文档,并将dataframe行作为其子文档.
x <- toJSON(unname(split(score, 1:nrow(score))))
bson <- mongo.bson.from.JSON(x)
mongo.insert(mongo,'abc.abc',x)
Run Code Online (Sandbox Code Playgroud)
另一方面,我希望每行都是单独的文档.我也看到上面的方法非常快,但是如果我们绕着行循环,它会大大降低速度