1

如何在單個MongoDB集合中的所有文檔中創建超級字段集合(除_id),假定所有文檔的類型都是相同的但字段數不同。集合中所有文檔中字段的集合Mongo

例子:

doc1 - {"_id":"test1", "firstName":"sample1", "age":24, "state":"Kansas"} 
doc2 - {"_id":"test2", "lastName":"sample2", "age":24, "country":"US"} 

超集將是:{"firstName", "lastName", "age", "state", "country"}

+1

能否請你在與你的努力的內容更好的標題和更詳細的信息? – manetsus

回答

1

你可以嘗試運行一個精簡操作,將輸入返回集合中的所有給定文件鍵作爲結果文檔的_id關鍵。這將出現在輸出集合中,然後您可以在_id字段上應用distinct命令來檢索字段的超集。

下面展示了這個概念的例子:

// Run mapReduce on collectionName 
String map = "function() { for (var key in this) { emit(key, null); } }"; 
String reduce = "function() {}"; 
MapReduceResults<ValueObject> results = mongoTemplate.mapReduce(
    "collectionName", 
    map, 
    reduce, 
    new MapReduceOptions().outputCollection("col_out"), 
    ValueObject.class 
); 

// Get the distinct keys from output collection col_out 
List<String> fieldsSuperset = mongoTemplate.getCollection("col_out").distinct("_id"); 
相關問題