【问题标题】:Querying for a list of all distinct fields in MongoDB collection查询 MongoDB 集合中所有不同字段的列表
【发布时间】:2012-06-20 10:55:34
【问题描述】:

我有一个存储所有表单数据的集合,每个表单具有不同的结构,但有些表单具有重叠的字段名称。我喜欢 mongo,因为它在这里证明了它的易用性,它允许我根据一些小的共同因素对完全不同的数据进行排序和汇总。

现在,对于 UI,我需要一个数据库中所有可能字段的列表,以便用户可以选择查看哪些字段。除了索引之外,我似乎找不到任何 mongo 来返回字段列表。

我该怎么办?

【问题讨论】:

  • 您的用例是什么?你想显示表单,根据哪个用户登录??

标签: php mongodb nosql


【解决方案1】:

没有提供此信息的本机 MongoDB 功能。 MongoDB 是完全无模式的,因此您必须执行完整的数据库遍历来编译所有唯一字段名称的列表。

唯一可能的解决方法是使用{field: <field name>, value: <field value>} 对存储所有字段并对“字段”运行不同的操作,或者在数据库中单独维护唯一字段名称的列表。两者都有明显的缺点。

【讨论】:

  • 另一种解决方法是按照StackOverflow: MongoDB Get names of all keys in collection 的建议运行 MapReduce。如果这将作为您的应用程序工作流程的一部分经常完成,最好按照 Remon 的建议维护一个单独的唯一字段名称列表。您可以使用Variety, a Schema Analyzer for MongoDB 生成唯一键列表。
  • 很公平,但是基于 MongoDB JS 上下文构建任何东西往往与高性能是互斥的。此外,您在任何时候都无法保证 m/r 返回的唯一字段列表是最新的。不过这可能不相关。
【解决方案2】:

试试这个:

 db.collection_keys.distinct("_id")

【讨论】:

    猜你喜欢
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 2016-07-29
    • 2012-02-08
    • 2013-02-04
    • 1970-01-01
    相关资源
    最近更新 更多