1

Как создать супер набор полей (кроме _id), присутствующих во всех документах в одной коллекции MongoDB, предполагая, что все документы одного типа, но различного количества полей.Надмножество полей во всех документах в коллекции 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

Вы можете попробовать запустить операцию MapReduce, которая будет возвращать все данные ключи документа в коллекции ввода в качестве _id ключа полученного документа , Это будет в выходной сборнике, где вы можете применить отдельную команду в поле _id для получения надмножества полей.

В следующем примере показано, это понятие:

// 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"); 

 Смежные вопросы

  • Нет связанных вопросов^_^