2015-04-06 75 views
2

我正在與Spring Integration一起開展項目。在消息流的某個點,我使用MongoDB Outbound Channel Adapter將有效載荷保存到我的mongodb數據庫中。獲取新插入文檔的標識

有沒有一種方法可以在插入文檔時立即獲取文檔的ID?基本上,插入文檔後,我需要將其id傳遞到另一個通道進行進一步處理。利用Spring集成基礎架構實現這一目標的最佳方法是什麼?

回答

1

你可以嘗試:

BasicDBObject doc = new BasicDBObject("foo", "bar"); 
collection.insert(doc); 
ObjectId id = (ObjectId)doc.get("_id"); 
+0

謝謝你chridam。你所展示的方法是使用mongo-java-driver來實現它的java方法。不過,我一直在尋找一個使用Spring集成中的特性的解決方案(如果有的話)。 不過我已經提高了你的答案,因爲它部分解決了我的問題。 – Tanvir 2015-04-06 23:26:03

3

MongoTemplate.insert(Object)

如果對象有一個「id」屬性,它會從MongoDB中生成的ID設置如果你的ID屬性。一個String然後MongoDB ObjectId將被用來填充該字符串,否則,從ObjectId到你的屬性類型的轉換將由Spring的BeanWrapper類來處理,該類利用類型轉換API,參見Spring的類型轉換「瞭解更多細節。

+0

謝謝sfat。你所展示的方法就是這樣做的春季數據方式。不過,我一直在尋找一個使用Spring集成中的特性的解決方案(如果有的話)。例如,(正如我在我的問題中提到的),我可以將有效負載保存到數據庫,而無需直接使用任何mongo-java或spring-data API。如果我能找到類似的方法來獲取插入的文檔ID,那將是非常好的。 不過我已經提高了你的答案,因爲它部分解決了我的問題。非常感激。 – Tanvir 2015-04-06 23:26:35

+0

@Tanvir你看過這個人嗎? http://stackoverflow.com/questions/21459319/spring-integration-messagechannel-id這似乎是你想要的東西,如果你想使用Spring集成 – sfat 2015-04-07 07:30:30

相關問題