Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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
Java 是否可以在mongodb集合中的嵌入式映射中获得不同的键列表?_Java_Mongodb_Spring Data_Mongodb Query - Fatal编程技术网

Java 是否可以在mongodb集合中的嵌入式映射中获得不同的键列表?

Java 是否可以在mongodb集合中的嵌入式映射中获得不同的键列表?,java,mongodb,spring-data,mongodb-query,Java,Mongodb,Spring Data,Mongodb Query,假设我有一个具有以下字段的Java对象: public class MyObject { public String foo; public Map<String, String> baz; } 我对baz地图中的键感兴趣,但我只想获得每个文档包含的键的不同的列表。映射的本质是它可能包含有限数量的已知密钥;我想知道这些已知密钥中的哪些目前正在我的收藏中的所有文档中使用。我不关心这些键的值,因此,我想要的输出是: ['key1', 'key2', 'key3'] 我

假设我有一个具有以下字段的Java对象:

public class MyObject {
    public String foo;
    public Map<String, String> baz;
}
我对
baz
地图中的键感兴趣,但我只想获得每个文档包含的键的不同的列表。映射的本质是它可能包含有限数量的已知密钥;我想知道这些已知密钥中的哪些目前正在我的收藏中的所有文档中使用。我不关心这些键的值,因此,我想要的输出是:

['key1', 'key2', 'key3']

我是否可以运行查询来获取此类返回数据?

很长一段时间以来,肯定有一个答案建议使用mapReduce方法来检查文档。然而,我怀疑您的实际用例更适合将“baz”更改为如下数组:
{“baz”:[{“key”:“key1”,“value”:“value1”},{“key”:“key3”,“value”:“value2”}
,其中对
.aggregate()
.distinct()
的简单调用将从“baz.key”获得列表,而无需JavaScript遍历。而且可能也更适合您的最终用例(在抽象问题中没有真正提及);使用对象数组会更好,但不幸的是,我无法更改此对象的结构。我很感激这是一个有点奇怪的用例,但这就是我目前需要处理的所有问题。谢谢你对我问题的形式提出的建设性反馈。然而,我确实觉得我在这里被曲解了。我确切地知道我想从这个问题中得到什么;我想要一个基于我在上述问题中提供的数据的独特的密钥列表。这件事的原因与此毫不相干。你必须明白,这是我被给予一个对象,并被告知我需要那串钥匙的结果。这是大企业工程的固有问题;我无法更改此设计,因为它不在我的控制范围内。很长一段时间以来,肯定有一个答案建议使用mapReduce方法来检查文档。然而,我怀疑您的实际用例更适合将“baz”更改为如下数组:
{“baz”:[{“key”:“key1”,“value”:“value1”},{“key”:“key3”,“value”:“value2”}
,其中对
.aggregate()
.distinct()
的简单调用将从“baz.key”获得列表,而无需JavaScript遍历。而且可能也更适合您的最终用例(在抽象问题中没有真正提及);使用对象数组会更好,但不幸的是,我无法更改此对象的结构。我很感激这是一个有点奇怪的用例,但这就是我目前需要处理的所有问题。谢谢你对我问题的形式提出的建设性反馈。然而,我确实觉得我在这里被曲解了。我确切地知道我想从这个问题中得到什么;我想要一个基于我在上述问题中提供的数据的独特的密钥列表。这件事的原因与此毫不相干。你必须明白,这是我被给予一个对象,并被告知我需要那串钥匙的结果。这是大企业工程的固有问题;我没有能力更改此设计,因为它不在我的控制范围内。
['key1', 'key2', 'key3']