MongoDB Java驱动程序Jackson映射器MongoJack

MongoDB Java驱动程序Jackson映射器MongoJack,java,json,mongodb,Java,Json,Mongodb,我希望找到最符合行业标准的方法来实现以下目标。 我正在编写一个Java应用程序,它将在MongoDB中管理文档。到目前为止,我读到的所有内容都指向使用Mongo Java驱动程序(3.0)连接到数据库,然后使用Jackson对象映射器将JSON映射到类以便于操作。 然后使用json.org: JSONObject json = new JSONObject(mapper.writeValueAsString(user)); 把它带回Mongo Document doc1 = Document

我希望找到最符合行业标准的方法来实现以下目标。 我正在编写一个Java应用程序,它将在MongoDB中管理文档。到目前为止,我读到的所有内容都指向使用Mongo Java驱动程序(3.0)连接到数据库,然后使用Jackson对象映射器将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 collection=database.getCollection(“mycoll”);
是否:

MongoCollection collection=database.getCollection(“mycoll”,BasicDBObject.class);
MongoCollection collection=database.getCollection(“mycoll”,MyObject.class);
MyObject功能是否消除了使用对象映射的需要


正如您所看到的,我现在有点困惑,任何帮助解决问题的最佳方法都是为Driver 3.0>这样做。

目前可用的最新MongoJack(从2015年11月开始的2.5.1)仍然使用现在已弃用的DBCollection(现在,从MongoDb Driver 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);
MongoClient-MongoClient=newmongoclient(“localhost”,27017);
DB=mongoClient.getDB(“数据库名”);
DBCollection coll=db.getCollection(“my.collection”);
杰克森收集=
wrap(coll,MyDomainObject.class,String.class);
在您的问题中,您提到了MongoDb驱动程序3.0的编解码器注册功能,并问:既然本机驱动程序内置了此功能,MongoJack是否仍然相关

我还没有写一个编解码器,但它似乎需要一些相当数量的锅炉板代码-这与MongoJack的简单性相去甚远。请看一个例子


在我看来,新版本的MongoJack将利用驱动程序的编解码器功能,并将其抽象为与当前版本的MongoJack一样简单的东西。我在MongoJack github项目上发布了一篇关于这一点的文章。

目前可用的最新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);
MongoClient-MongoClient=newmongoclient(“localhost”,27017);
DB=mongoClient.getDB(“数据库名”);
DBCollection coll=db.getCollection(“my.collection”);
杰克森收集=
wrap(coll,MyDomainObject.class,String.class);
在您的问题中,您提到了MongoDb驱动程序3.0的编解码器注册功能,并问:既然本机驱动程序内置了此功能,MongoJack是否仍然相关

我还没有写一个编解码器,但它似乎需要一些相当数量的锅炉板代码-这与MongoJack的简单性相去甚远。请看一个例子

在我看来,新版本的MongoJack将利用驱动程序的编解码器功能,并将其抽象为与当前版本的MongoJack一样简单的东西。我在MongoJack github项目上发布了一篇关于这一点的文章