Mongo convert Document to DBObject

Viewed 6353

Hi I need to convert Mongo Document to DBObject (BasicDBObject).

I am uploading a file to mongo using GridFS and I want to set metadata, which I get in document. I know Document is pretty much the same as DBObject. I know I can do something like this:

Document doc = new Document();
BasicDBObject.parse(doc.toJson());

But isn't this needlessly performance heavy?

The gridFS method setMetaData() accepts only DBObject so i have to convert it.

Is there a better way of doing that rather then converting it to string and back ?

2 Answers

I know this is an old question and there is an accepted answer however it is not correct.

The proposed answer only does a shallow conversion between Document and DBOject. If your Json object contains nested objects or lists they will not be converted properly.

I got around this problem by serialising to JSON string. It is not efficient at all but might be enough in most cases, and at least it is correct:

public final class BsonConverter {
    public static Document toDocument(DBObject dbObject) {
        return Document.parse(dbObject.toString());
    }
    public static DBObject toDBObject(Document document) {
        return BasicDBObject.parse(document.toJson());
    }
}
Related