とりわけ、MongoDBコレクション内のマップのマップを永続化して取得できるようにしたいと思います。私はJavaを使用してMorphia経由でMongoDBにアクセスしています。
以下で使用している例は、さまざまな車の所有者の詳細を示すドキュメントを含むコレクションです。この例では、特定のメーカーとモデルの車両の数がマップのマップに保存されています
プロパティの大部分は問題なく動作していますが、プロパティが次のように定義されたマップのマップである場合:
@Property("vehicles")
private Map<String, Map<String, Integer> vehicles = new HashMap<String, HashMap<String, Integer>>();
オブジェクトが作成され(一部の値がマップに挿入され)、Mongoデータベースに永続化されます。
"vehicles" : {
"FORD" : {
"FIESTA" : 1
},
"TOYOTA" : {
"COROLLA" : 1,
"PRIUS": 1
},
"BMW" : {
"SLK" : 1
}
}
ただし、オブジェクトがJavaコードを介して取得される場合(MongoDBコンソールでのクエリは期待どおりに機能します))、次のようになります...
Query<Owner> q = ds.find(Owner.class);
System.out.println(q.countAll());
Iterable<Owner> i = q.fetch();
for (Owner o : i) {
System.out.println(o);
}
...コードはq.fetch()行で恐ろしい方法で死にます。
助けてください :)