如何设置MongoTemplate集合映射

时间:2014-03-03 19:38:31

标签: java spring mongodb spring-batch spring-mongo

我有一个名为Foo的DAO。 MongoTemplate想要将其映射到名为foos的数据库集合。问题是:

  • 在Mongo中,该集合名为Foos
  • Foo对象来自第三方库,其所有构造函数都是private

如何配置我的Spring Bean,MongoTemplate - 通过MongoItemReader - 知道集合Foos映射到我的文档Foo

如果有帮助,我主要关注从 MongoDB中读取数据

1 个答案:

答案 0 :(得分:1)

答案:我最终延长MongoItemReader并为collection添加了一个getter / setter。这允许我委托我不关心的东西,并修改doPageRead()以在我的自定义查询中设置集合:

@Scope("step")
public class MyMongoItemReader extends MongoItemReader<Object> {

    public void setCollection(String collection) {
        this.collection = collection;
    }

    @Override
    protected Iterator<Object> doPageRead() {

        ...
        Query mongoQuery = // set query
        ...

        return (Iterator<Object>) //
           template.find(mongoQuery, Object.class, this.collection).iterator();
    }

}