Php 查询MongoDB集合中所有不同字段的列表
我有一个存储所有表单数据的集合,每个表单具有不同的结构,但有些表单具有重叠的字段名。我喜欢mongo,因为它在这里证明了它的易用性,它允许我根据一些小的公共因素对完全不同的数据进行排序和聚合 现在,对于UI,我需要数据库中所有可能字段的列表,以便用户可以选择要查看的字段。除了索引,我似乎找不到任何mongo-anything来返回字段列表Php 查询MongoDB集合中所有不同字段的列表,php,mongodb,nosql,Php,Mongodb,Nosql,我有一个存储所有表单数据的集合,每个表单具有不同的结构,但有些表单具有重叠的字段名。我喜欢mongo,因为它在这里证明了它的易用性,它允许我根据一些小的公共因素对完全不同的数据进行排序和聚合 现在,对于UI,我需要数据库中所有可能字段的列表,以便用户可以选择要查看的字段。除了索引,我似乎找不到任何mongo-anything来返回字段列表 我该怎么做呢?没有提供此信息的本机MongoDB功能。MongoDB是完全无模式的,因此您必须进行完整的数据库遍历,以编译所有唯一字段名的列表 唯一可能的解决
我该怎么做呢?没有提供此信息的本机MongoDB功能。MongoDB是完全无模式的,因此您必须进行完整的数据库遍历,以编译所有唯一字段名的列表
唯一可能的解决方法是使用
{field:,value:}
对存储所有字段,并对“field”运行一个不同的操作,或者在数据库中单独维护一个唯一字段名列表。两者都有明显的缺点。没有提供此信息的本机MongoDB功能。MongoDB是完全无模式的,因此您必须进行完整的数据库遍历,以编译所有唯一字段名的列表
唯一可能的解决方法是使用{field:,value:}
对存储所有字段,并对“field”运行一个不同的操作,或者在数据库中单独维护一个唯一字段名列表。两者都有明显的缺点。试试以下方法:
db.collection_keys.distinct("_id")
试试这个:
db.collection_keys.distinct("_id")
你的用例是什么??您想显示表单,根据哪个用户登录??您的用例是什么??您想显示表单,根据哪个用户登录??另一个解决方法是按照建议运行MapReduce。如果这将作为应用程序工作流的一部分经常进行,那么最好按照Remon的建议维护一个单独的唯一字段名列表。您可以使用.Fair生成一个唯一密钥列表,但基于MongoDB JS上下文构建任何内容都会带来互斥性和高性能。此外,您不能保证在任何时间点m/r返回的唯一字段列表是最新的。但这可能与此无关。另一个解决方法是按照建议运行MapReduce。如果这将作为应用程序工作流的一部分经常进行,那么最好按照Remon的建议维护一个单独的唯一字段名列表。您可以使用.Fair生成一个唯一密钥列表,但基于MongoDB JS上下文构建任何内容都会带来互斥性和高性能。此外,您不能保证在任何时间点m/r返回的唯一字段列表是最新的。但这可能并不相关。