我正在使用dbGetQueryForKeys
函数(我在这里了解到 https://stackoverflow.com/questions/14486780/rmongo-dbgetqueryforkeys-what-is-the-structure-of-keys-and-how-do-i-sub-ke),并且似乎没有获得正确的返回值——它收集了正确的键,但值都是 NA。
这是我在 mongo 控制台中的查询,它产生了我期望的结果:
db.final.find({},{"ids.myid":1,"org.name":1,"_id":0}).skip(0).limit(5000)
这会产生...的列表
{"ids" : {"myid": "123"}, "org": {"name": "Fred"}},
然而,RMongo 中的等价物:
dbGetQueryForKeys(db,'final', '{}','{"ids.myid":1,"org.name":1,"_id":0}',skip=0,limit=5000)
Produces
ids.myid org.name X_id
1 NA NA NA
2 NA NA NA
3 NA NA NA
有几个问题:
- 一切皆有 NA
- X_id 列仍然存在,尽管它已为 0。
但它确实正确地/省略了/所有其余的键,因此它在某种程度上清楚地识别了该命令,只是返回了错误的值。
现在,文档是这样说的:
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.
这似乎是我正在查询嵌套变量时可能出现的问题。但是,这些嵌套的返回值本身是单数,ids.myid 和 org.name 都是字符串而不是数组。然而,事实真的是这样吗? RMongo 仅适用于完全扁平的集合,没有任何嵌套?