如何从 R mongolite 包中查询 mongodb 集合字段名称

How to query mongodb collection field names from R mongolite package

我想 return 来自 R mongolite 的给定 mongodb 集合的字段名称。

从 mongolite 最新版本(即 1.5+)开始,您可以 运行 mongodb 上的原始命令,我可以使用下面的示例来 return 所有集合:

m = mongo(db = 'dbname', url='urlofdb')
m$run('{"listCollections":1}') 

这将 return 集合列表:

$cursor
$cursor$id
[1] 0

$cursor$ns
[1] "db.$cmd.listCollections"

$cursor$firstBatch
                           name       type          readOnly     idIndex.v   idIndex._id idIndex.name            idIndex.ns
1                    collection-name  collection    FALSE         1           1           _id_                   db.collection

你能告诉我如何使用 运行 命令 return 给定集合的列名吗?

谢谢!

我觉得你真的不能直接做。

如果可以,那将在很大程度上违背 NoSQL 数据库的整个理念(Mongo 是)。 NoSQL 数据库背后的想法是你有一个文档集合,它们都可以有自己的字段。
纸质文档的类比确实有效,'columns' 的概念被 'fields' 取代,它不属于整个集合,而是属于单个文档,每个文档可以包含任何内容.并且没有任何东西都必须符合的总体强制性模板。实际上,很多文件都会有类似的结构,但这绝不是保证。这意味着您完全有可能拥有 1 亿个文档,其中包含 3 个字段,分别称为 "a"、"b" 和 "c",而文档 100000001 有 4 个字段:a、b、c 和 d。

可能是数据库引擎跟踪集合中某处的字段,但我对此表示怀疑。如果没有,获得所有四个名称 a、b、c 和 d 的唯一方法是遍历所有 100000001 个文档(或更多),这将需要一段时间。毫无疑问,实现了一些优化,但永远是一个难题。

如果您只想要一个小型数据库的答案,我认为简单地查询所有文档并获取结果 data.frame 的列名是最简单的。

但如果你的数据库很大,这个问题就不再是关于 R 或 mongolite 的问题了,我还不够 Mongo 来帮助你进一步。