public Object copy() {
        // copy field values into new object
        BasicDBObject newCopy = new BasicDBObject(this.toMap());
        // need to clone the sub obj
        for (final String field : keySet()) {
            Object val = get(field);
            if (val instanceof BasicDBObject) {
                newCopy.put(field, ((BasicDBObject) val).copy());
            } else if (val instanceof BasicDBList) {
                newCopy.put(field, ((BasicDBList) val).copy());
            }
        }
        return newCopy;
    }
public Object copy() {
        
        BasicDBObject newCopy = new BasicDBObject(this.toMap());
        
        for (final String field : keySet()) {
            Object val = get(field);
            if (val instanceof BasicDBObject) {
                newCopy.put(field, ((BasicDBObject) val).copy());
            } else if (val instanceof BasicDBList) {
                newCopy.put(field, ((BasicDBList) val).copy());
            }
        }
        return newCopy;
    }
public Object copy ( ) { // copy field values into new object BasicDBObject newCopy = new BasicDBObject ( this . toMap ( ) ) ; // need to clone the sub obj for ( final String field : keySet ( ) ) { Object val = get ( field ) ; if ( val instanceof BasicDBObject ) { newCopy . put ( field , ( ( BasicDBObject ) val ) . copy ( ) ) ; } else if ( val instanceof BasicDBList ) { newCopy . put ( field , ( ( BasicDBList ) val ) . copy ( ) ) ; } } return newCopy ; }
Creates a new instance which is a copy of this BasicDBObject.

@return a BasicDBObject with exactly the same values as this instance.
Creates a new instance which is a copy of this BasicDBObject .