Fra*_*bek 5 java mongodb gridfs
您好我需要将Mongo文档转换为DBObject(BasicDBObject).
我正在使用GridFS将文件上传到mongo,我想设置元数据,这是我在文档中获得的.我知道Document与DBObject几乎相同.我知道我可以这样做:
Document doc = new Document();
BasicDBObject.parse(doc.toJson());
Run Code Online (Sandbox Code Playgroud)
但是,这不必要的表现是不是很重?
gridFS方法setMetaData()只接受DBObject所以我必须转换它.
是否有更好的方法来做到这一点而不是将其转换为字符串并返回?
我知道这是一个老问题,有一个公认的答案,但它不正确。
建议的答案仅在和之间进行浅层转换。如果您的 Json 对象包含嵌套对象或列表,它们将无法正确转换。DocumentDBOject
我通过序列化为 JSON 字符串解决了这个问题。它根本没有效率,但在大多数情况下可能已经足够了,至少它是正确的:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
你在这里进行微观优化.
但是,由于这两个类都是Map的实现,您可以这样做:
Document document = new Document();
BasicDBObject basicDBObject = new BasicDBObject(document);
Run Code Online (Sandbox Code Playgroud)
在内部,这会Map#putAll执行将Document Map的所有条目放入BasicDbObject映射的操作.