Prashant Thorat
Prashant Thorat

Reputation: 1812

MongoDb accesing nested documents in java

I am new to MongoDB. I am trying to access nested doc in mongodb. My sample doc is

{
    "Advertisement" : {
        "html" : "zxcxz"
    },
    "Notification" : {
        "date_from" : ISODate("2013-06-30T18:30:00Z"),
        "date_too" : ISODate("2013-07-16T18:30:00Z"),
        "description" : "vcvc",
        "url" : "vcvc"
    },
    "_id" : ObjectId("51e4f10ee4b08e0a6ebcbe46"),
    "group_name" : "sumit",
    "target_audience" : {
        "gender" : "male",
        "section" : "xyz",
        "catagory" : "--Computer--",
        "location" : {
            "country" : "--Country--",
            "state" : "--State--",
            "city" : "--City--"
        }
    }
}

I am trying to get gender from target_audience. My java code is

DBCursor f=con.coll.find(query);
while(f.hasNext())
{
    f.next();
    gender=(String) f.curr().get("target_audience.gender");
}

But it returns null.

Upvotes: 1

Views: 2835

Answers (1)

c.P.u1
c.P.u1

Reputation: 17094

The result of DBCursor.next() and DBCursor.curr() is a BasicDBObject. For keys with embedded documents, BasicDBObject.get(key) returns a BasicDBObject

DBCursor f=con.coll.find(query);
while(f.hasNext())
{
    BasicDBObject result = (BasicDBObject) f.next();
    BasicDBObject target = (BasicDBObject) result.get("target_audience");
    gender = (String) target.get("gender");
}

Upvotes: 3

Related Questions