mySQL では、describe
ステートメントを使用して特定のテーブルのスキーマを取得できますが、残念ながら、MongoDB Java ドライバーの同様の機能を見つけることができませんでした:(
フロー 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
スキーマの再試行とは何かを説明したので、some1 が親切で、その方法を教えてくれませんか?
それが役立つ場合は、フィールド名だけを知る必要がある場合があります(データ型は常に同じですが、データ型を取得する方法も知っておくとよいでしょう)。
回避策として、DBObject を Map に変換し、次に Map を Set に、Set を Iterator に変換し、属性の名前/値を抽出します...データ型を抽出する方法がまだわかりません。
これは:
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());