如何使用Java Mongo DB驱动程序版本3将BasicDBObject转换为Mongo文档?

2022-09-03 18:34:43

在Java Mongo DB驱动程序版本3中,与版本2相比,API已更改。所以像这样的代码不再编译了:

BasicDBObject personObj = new BasicDBObject();
collection.insert(personObj) 

集合插入仅适用于 Mongo 文档。

处理旧代码,我需要问一个问题:

将 BasicDBObject 转换为文档的最佳方法是什么?


答案 1

我们可以通过以下方式将BasicDBObject转换为文档

public static Document getDocument(DBObject doc)
{
   if(doc == null) return null;
   return new Document(doc.toMap());
}

因为文档本身是Map<String,Object>的实现。

并且可以像 的实现一样被捕获。BasicDBObjectDBObjectBasicDBObjectDBObject

@Black_Rider也为你


答案 2

我认为最简单的方法是将代码更改为使用文档而不是BasicDBObject。

所以改变

BasicDBObject doc = new BasicDBObject("name", "john")
    .append("age", 35)
    .append("kids", kids)
    .append("info", new BasicDBObject("email", "john@mail.com")
    .append("phone", "876-134-667"));

import org.bson.Document;
...
Document doc = new Document("name", "john")
    .append("age", 35)
    .append("kids", kids)
    .append("info", new BasicDBObject("email", "john@mail.com")
    .append("phone", "876-134-667"));

,然后插入到集合中

coll.insertOne(doc);

您需要更改其他代码位才能与MongoDB 3 +一起使用

MongoDatabase vs.DB MongoCollection vs DBCollection