MongoDB でクエリされたドキュメントから値を取得できません。
たとえば、doc 構造は次のようになります。
{
"_id": {
"$oid": "50f93b74f9eccc540b302462"
},
"response": {
"result": {
"code": "1000",
"msg": "Command completed successfully"
},
"resData": {
"domain:infData": {
"domain:name": "ritesh.com",
"domain:crDate": "2007-06-15T12:02:36.0000Z",
"domain:exDate": "2013-06-15T12:02:36.0000Z"
}
}
}
}
クエリコードは次のとおりです。
DBCollection collection = db.getCollection("domains");
BasicDBObject p = new BasicDBObject("response.resData.domain:infData.domain:name", "ritesh.com");
DBCursor c = collection.find(p);
while(c.hasNext()) {
DBObject obj = c.next();
Object value = obj.get("response.resData.domain:infData.domain:name");
}
それは問題なくクエリを実行し、ドキュメントをフェッチしますが、DBObject (または c. next() は BasicDBObject 型を返します)。
次のように、一度に 1 つずつオブジェクトを取得できます。
((DBObject)obj.get("response")).get("resData")....
しかし、それは非常に面倒に思えます。
次のように BasicDBObject にネストされたフィールド値を put() できるので、私は考えました:
basicDBObject.put("response.resData.domain:infData.domain:name", "ritesh.com");
同様に get() を使用して、同じ種類のキーを使用して BasicDBObject の結果から取得できることを確認しました。上記のコードで次のことを試みたように:
Object value = obj.get("response.resData.domain:infData.domain:name");
しかし、それは null 値を返しています。
それはおそらく簡単なことですが、私にはそれを理解できないようです。そして、私がネットでチェックしたどこでも、例は結果からネストされていない値のみをフェッチします。お気に入り
doc.get("name");
次のようなものの代わりに:
doc.get("name.lastname.clanname");
どんな助けでも大歓迎です。ありがとう!