我希望找到最符合行业标准的方法来实现以下目标。 我正在编写一个Java应用程序来管理MongoDB中的文档。到目前为止我所阅读的所有内容都指向使用Mongo Java驱动程序(3.0)连接到数据库,然后使用Jackson Object Mapper将JSON映射到类以便于操作。 然后使用json.org:
JSONObject json = new JSONObject(mapper.writeValueAsString(user));
让它回到Mongo。
Document doc1 = Document.parse(json.toString());
collection.insertOne(doc1)
因此,对于新的3.0驱动程序,由于不再推荐使用DBObject,因此事情发生了一些变化。
那么从Mongo获取文档的最佳方法是编辑和更新它们然后保存更新的文档。
MongoCollection<Document> collection = database.getCollection("mycoll");
的作用:
MongoCollection<BasicDBObject> collection = database.getCollection("mycoll", BasicDBObject.class);
MongoCollection<MyObject> collection = database.getCollection("mycoll", MyObject.class);
MyObject功能是否消除了使用对象映射的需要?
正如你所看到的,我现在有点困惑,任何帮助理顺最好的是为Driver 3.0&gt;做这件事。会很棒的。
答案 0 :(得分:0)
目前可用的最新MongoJack(自2015年11月起为2.5.1)仍然使用现已弃用的DBCollection(现在,从MongoDb驱动程序3.0开始)。
如果你愿意,你仍然可以这样做:
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB("databaseName");
DBCollection coll = db.getCollection("my.collection");
JacksonDBCollection<MyDomainObject, String> wrapped =
JacksonDBCollection.wrap(coll, MyDomainObject.class, String.class);
在您的问题中,您提出了MongoDb驱动程序3.0的Codec注册表功能,并且基本上问,MongoJack是否仍然相关,因为本机驱动程序内置了此功能?
我还没有编写过编解码器,但它似乎需要一些相当数量的样板代码 - 与MongoJack的简单性相去甚远。请查看此blog post中的示例。
在我看来,MongoJack的新版本将利用驱动程序的Codec功能,并将它们抽象为MongoJack当前版本提供的简单内容。我在MongoJack github项目上发布了一个question。