В mySQL оператор describe
можно использовать для получения схемы данной таблицы, к сожалению, я не смог найти аналогичную функциональность для java-драйвера MongoDB :(
Допустим, у меня есть текущие документы BSON:
{
_id: {$oid:49},
values: { a:10, b:20}
}
,
{
_id: {$oid:50},
values: { b:21, c:31}
}
Теперь предположим, что я делаю:
DBObject obj = cursor.next();
DBObject values_1 = (DBObject) obj.get("values");
и схема должна быть примерно такой:
>a : int
>b : int
и для следующего документа:
DBObject obj = cursor.next();
DBObject values_2 = (DBObject) obj.get("values");
схема должна быть:
>b : int
>c : int
Теперь, когда я объяснил, что такое повторная проверка схемы, может ли кто-нибудь быть милым и сказать мне, как это сделать?
Если это поможет, в моем случае мне нужно знать только имена полей (поскольку тип данных всегда один и тот же, но было бы неплохо также знать, как получить типы данных).
Работа вокруг: преобразование DBObject в карту, затем карту в набор, набор в итератор и извлечение имен/значений атрибутов... Теперь у вас все еще есть представление о том, как извлекать типы данных.
Это:
DBObject values_1 = (DBObject) obj.get("values");
Map _map = values_1.toMap();
// Set set = _map.entrySet(); // if you want the <key, value> pairs
Set _set_keys = _map.keySet();
Iterator _iterator = _set_keys.iterator();
while (_iterator.hasNext())
System.out.println("-> " + _iterator.next());