2016-11-28 3 views
0

Пытаюсь реорганизовать много кода от одного из наших услуг, я в конечном итоге, используя кусок кода, как:Fetch _id документа в MongoDB 3.3.0 выше

Document documentObject; 
String docMongoId = ((DBObject) documentObject).removeField("_id").toString(); 

, который, хотя и не на компиляции, но во время исполнение привело к

java.lang.ClassCastException: com.pack.model.Document не может быть брошено к com.mongodb.DBObject

Whe повод Document - это определенный нами тип. Теперь у нас есть кусок кода следующим образом:

MongoCollection<Document> dbCollection = mongoClient.getDatabase("dbName") 
       .getCollection("collectionName", Document.class); 

Ищу помощь, уже прошли через несколько ссылок -

Get ID of last inserted document in a mongoDB w/ Java driver

MongoError: cannot change _id of a document

How to query documents using "_id" field in Java mongodb driver?

, которые в основном предлагают использовать BasicDBObject и мы больше не хотим использовать старый контекст. Есть ли способ получить доступ к _id документа сейчас (с обновлением клиента) в java?

Просьба запросить дополнительную или отсутствующую информацию, необходимую здесь.

+0

Что именно вы пытаетесь реорганизовать? Можете ли вы добавить старый код? добавьте пример. – Veeram

+0

@Veeram намерен сохранить _id документа и сохранить его при обновлении существующего документа или создании нового документа, если нет соответствующего поиска. _id также используется в другом документе 'Client', который в основном отмечает наличие последнего документа. – nullpointer

+0

Спасибо за объяснение. Дайте мне знать, если вы хотите, чтобы я улучшил свой ответ. – Veeram

ответ

1

Идея состоит в том, чтобы конвертировать из документа типа bson в модельный документ. Добавлен образец класса, демонстрирующий использование.

import com.mongodb.MongoClient; 
import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoCursor; 
import com.mongodb.client.MongoDatabase; 
import org.bson.types.ObjectId; 

public class Mongo { 

    public static void main(String[] args) { 

     MongoClient mongoClient = new MongoClient(); 

     MongoDatabase db = mongoClient.getDatabase("dbName"); 

     MongoCollection <org.bson.Document> dbCollection = db.getCollection("collectionName", org.bson.Document.class); 

     MongoCursor <org.bson.Document> iterator = dbCollection.find().iterator(); 

     while (iterator.hasNext()) { 
      org.bson.Document inDoc = iterator.next(); 
      Document outDoc = new Document(); 
      outDoc.setId(inDoc.getObjectId("_id")); 
      outDoc.setName(inDoc.getString("name")); 
      System.out.print(outDoc.toString()); 
     } 

    } 


    public static class Document { 

     private ObjectId id; 
     private String name; 

     public ObjectId getId() { 
      return id; 
     } 

     public void setId(ObjectId id) { 
      this.id = id; 
     } 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 

     @Override 
     public String toString() { 
      return "Document{" + 
       "id=" + id + 
       ", name='" + name + '\'' + 
       '}'; 
     } 

    } 
} 
Смежные вопросы