簡體   English   中英

MongoDB Java驅動程序Jackson映射器MongoJack

[英]MongoDB Java Driver Jackson Mapper MongoJack

我正在尋找實現以下目標的最行業標准方法。 我正在編寫一個Java應用程序,它將在MongoDB中管理文檔。 到目前為止,我所讀的一切都指向使用Mongo Java驅動程序(3.0)連接到數據庫,然后使用Jackson Object Mapper將JSON映射到Class以便於操作。 然后使用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>這樣做會很棒。

當前可用的最新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的編解碼器注冊表功能,並且本質上是在問,由於本機驅動程序內置了此功能,MongoJack仍然有用嗎?

我還沒有編寫編解碼器,但是它似乎需要相當數量的樣板代碼-與MongoJack的簡單性相去甚遠。 看一下此博客文章中的示例。

我認為,新版本的MongoJack將利用驅動程序的編解碼器功能,並將其抽象為與當前版本的MongoJack一樣簡單的東西。 我已經在MongoJack github項目上發布了一個與此有關的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM