我需要从MongoDB轮询数据,处理数据,在处理数据时,我必须更新数据库中数据的状态为" PROCESSED"使用MongoDB出站通道。
当我使用入站通道查询MongoDB时,我得到了一个对象列表。
我使用一个遍历此列表的变换器并将状态更新为" PROCESSING"。
当我将此更新列表(包装为有效负载)传递到出站MongoDB通道时,希望它会更新状态,如果数据库中有所有元素,我会得到异常。
BasicDBObject无法强制转换为BasicDBList
如何在这里继续?
答案 0 :(得分:0)
你知道,听起来像Spring Data MongoDB中的一个bug。
我们有MongoTemplate.toDocument()
中的代码:
if (!(objectToSave instanceof String)) {
Document dbDoc = new Document();
writer.write(objectToSave, dbDoc);
然后我们跳转到MappingMongoConverter.writeInternal()
:
if (Collection.class.isAssignableFrom(entityType)) {
writeCollectionInternal((Collection<?>) obj, ClassTypeInformation.LIST, (BasicDBList) bson);
return;
}
我们确实无法投放到BasicDBList
,因为我们原来的bson
只是Document
。
您可以考虑在修改每个实体并将它们单独存储到数据库中之前使用Splitter
,而不是列表。