/** Build the Map record from the Mongo DBObject. */ public MongoRecord buildRecordFromDBObject(DBObject object) { MongoRecord record = new MongoRecord(); for (Iterator iterator = object.toMap().entrySet().iterator(); iterator.hasNext(); ) { Map.Entry entry = (Map.Entry) iterator.next(); if (entry.getValue() instanceof BasicDBList) { List values = new ArrayList(); for (Iterator valuesIterator = ((BasicDBList) entry.getValue()).iterator(); valuesIterator.hasNext(); ) { Object value = valuesIterator.next(); if (value instanceof DBObject) { values.add(buildRecordFromDBObject((DBObject) value)); } else { values.add(value); } } record.put((String) entry.getKey(), values); } else if (entry.getValue() instanceof DBObject) { MongoRecord nestedRecord = buildRecordFromDBObject((DBObject) entry.getValue()); record.put((String) entry.getKey(), nestedRecord); } else { record.put((String) entry.getKey(), entry.getValue()); } } return record; }