Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查询MongoDB集合中所有不同字段的列表_Php_Mongodb_Nosql - Fatal编程技术网

Php 查询MongoDB集合中所有不同字段的列表

Php 查询MongoDB集合中所有不同字段的列表,php,mongodb,nosql,Php,Mongodb,Nosql,我有一个存储所有表单数据的集合,每个表单具有不同的结构,但有些表单具有重叠的字段名。我喜欢mongo,因为它在这里证明了它的易用性,它允许我根据一些小的公共因素对完全不同的数据进行排序和聚合 现在,对于UI,我需要数据库中所有可能字段的列表,以便用户可以选择要查看的字段。除了索引,我似乎找不到任何mongo-anything来返回字段列表 我该怎么做呢?没有提供此信息的本机MongoDB功能。MongoDB是完全无模式的,因此您必须进行完整的数据库遍历,以编译所有唯一字段名的列表 唯一可能的解决

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

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


我该怎么做呢?

没有提供此信息的本机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返回的唯一字段列表是最新的。但这可能并不相关。