2016-09-04 3 views
3

Есть ли простой способ конвертировать Simple POJO в org.bson.Document?POJO to org.bson.Document и наоборот

Я знаю, что есть способы сделать это, как это одна:

Document doc = new Document(); 
doc.append("name", person.getName()): 

Но у него есть намного проще и опечатка меньше путь?

ответ

2

Дело в том, что вам не нужно опираться на org.bson.Document.

Morphia сделает все, что для вас за занавеской.

import com.mongodb.MongoClient; 
import org.mongodb.morphia.Datastore; 
import org.mongodb.morphia.DatastoreImpl; 
import org.mongodb.morphia.Morphia; 
import java.net.UnknownHostException; 

..... 
    private Datastore createDataStore() throws UnknownHostException { 
     MongoClient client = new MongoClient("localhost", 27017); 
     // create morphia and map classes 
     Morphia morphia = new Morphia(); 
     morphia.map(FooBar.class); 
     return new DatastoreImpl(morphia, client, "testmongo"); 
    } 

...... 

    //with the Datastore from above you can save any mapped class to mongo 
    Datastore datastore; 
    final FooBar fb = new FooBar("hello", "world"); 
    datastore.save(fb); 

Здесь вы найдете несколько примеров: https://mongodb.github.io/morphia/

0

Вы можете использовать Morphia, чтобы сохранить/загрузить POJO для вас. Если все пойдет так, как планировалось, 3.4 драйвера Java будет поддерживать это отображение изначально.

+0

вы можете привести пример? – yesterdaysfoe

1

Вы можете использовать Gson и Document.parse(String json) для преобразования POJO в Document. Это работает с версией драйвера Java версии 3.4.2.

Что-то вроде этого:

package com.jacobcs; 

import org.bson.Document; 

import com.google.gson.Gson; 
import com.mongodb.MongoClient; 
import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoDatabase; 

public class MongoLabs { 

    public static void main(String[] args) { 
     // create client and connect to db 
     MongoClient mongoClient = new MongoClient("localhost", 27017); 
     MongoDatabase database = mongoClient.getDatabase("my_db_name"); 

     // populate pojo 
     MyPOJO myPOJO = new MyPOJO(); 
     myPOJO.setName("MyName"); 
     myPOJO.setAge("26"); 

     // convert pojo to json using Gson and parse using Document.parse() 
     Gson gson = new Gson(); 
     MongoCollection<Document> collection = database.getCollection("my_collection_name"); 
     Document document = Document.parse(gson.toJson(myPOJO)); 
     collection.insertOne(document); 
    } 

}