我正在与Spring Integration一起开展项目。在消息流的某个点,我使用MongoDB Outbound Channel Adapter将有效载荷保存到我的mongodb数据库中。获取新插入文档的标识
有没有一种方法可以在插入文档时立即获取文档的ID?基本上,插入文档后,我需要将其id传递到另一个通道进行进一步处理。利用Spring集成基础架构实现这一目标的最佳方法是什么?
我正在与Spring Integration一起开展项目。在消息流的某个点,我使用MongoDB Outbound Channel Adapter将有效载荷保存到我的mongodb数据库中。获取新插入文档的标识
有没有一种方法可以在插入文档时立即获取文档的ID?基本上,插入文档后,我需要将其id传递到另一个通道进行进一步处理。利用Spring集成基础架构实现这一目标的最佳方法是什么?
你可以尝试:
BasicDBObject doc = new BasicDBObject("foo", "bar");
collection.insert(doc);
ObjectId id = (ObjectId)doc.get("_id");
从MongoTemplate.insert(Object):
如果对象有一个“id”属性,它会从MongoDB中生成的ID设置如果你的ID属性。一个String然后MongoDB ObjectId将被用来填充该字符串,否则,从ObjectId到你的属性类型的转换将由Spring的BeanWrapper类来处理,该类利用类型转换API,参见Spring的类型转换“了解更多细节。
谢谢sfat。你所展示的方法就是这样做的春季数据方式。不过,我一直在寻找一个使用Spring集成中的特性的解决方案(如果有的话)。例如,(正如我在我的问题中提到的),我可以将有效负载保存到数据库,而无需直接使用任何mongo-java或spring-data API。如果我能找到类似的方法来获取插入的文档ID,那将是非常好的。 不过我已经提高了你的答案,因为它部分解决了我的问题。非常感激。 – Tanvir 2015-04-06 23:26:35
@Tanvir你看过这个人吗? http://stackoverflow.com/questions/21459319/spring-integration-messagechannel-id这似乎是你想要的东西,如果你想使用Spring集成 – sfat 2015-04-07 07:30:30
谢谢你chridam。你所展示的方法是使用mongo-java-driver来实现它的java方法。不过,我一直在寻找一个使用Spring集成中的特性的解决方案(如果有的话)。 不过我已经提高了你的答案,因为它部分解决了我的问题。 – Tanvir 2015-04-06 23:26:03