MongoDB неплохо справляется с задачей хранения огромных коллекций неструктурированных данных. Иначе говоря, если вы не можете описать структуру своих данных и не знаете как она изменится в будущем, но можете эти данные отобразить в json-формате, то mongo справится с задачей хранения schemaless данных.
print("id,name,city");
db.collection.find({
"location.country": "anything"
}, {
"id": 1,
"name": 1,
"location.city": 1
}).forEach(function(item) {
if(typeof item.location === "undefined") {
city = "";
} else {
city = item.location.city;
}
print(item.id + "," + item.name + "," + city );
});
И выполнить его в MongoDB таким способом:
mongo database export.js > out.csv
Поясню по скрипту:
- в первой строке выводим заголовки столбцов в CSV формате
- затем фильтруем (find) коллекцию (db.collection) по полю (location.country)
- перечисляем имена полей («id»: 1) которые нужно извлечь из документов
- если в документе не определено поле (typeof item.location === «undefined»), задать ему значение по-умолчанию
- формируем строку со значениями через запятую в CSV формате