java - 如何设置MongoTemplate集合映射

标签 java spring mongodb spring-batch spring-mongo

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

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

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

如果有帮助的话,我主要关心的是从 MongoDB 读取数据。

最佳答案

答案:我最终扩展了 MongoItemReader 并为 collection 添加了 getter/setter。这使我能够委托(delegate)我不关心的内容,并修改 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();
    }

}

关于java - 如何设置MongoTemplate集合映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22155722/

相关文章:

java - StreamCorruptedException : invalid stream header

java - 如何将 5 行数据作为 1 个元素存储在 ArrayList 中?

model-view-controller - Spring 3 MVC : Show validation message with custom validator

java - 等待 Spring 应用程序中的线程完成

java - Spring MVC : Could not resolve placeholder in string value

python - 在 mongoalchemy 0.21 中指定连接字符串的位置

javascript - 在 NodeJS 中进行同步 MongoJS 查询

java - Eclipse:如何检测项目是工作区的一部分

c# - 从azure函数连接到MongoDB

java - 如何在Junit(Spring Boot)中模拟BeanPropertyRowMapper?