You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Spring获取MongoDB集合中的全部文档?

在Spring中使用MongoOperations获取集合全部文档的解决方案

别担心,其实MongoOperations里有好几种方法可以帮你获取集合里的全部文档,我给你整理几个常用的方案:

1. 使用findAll()方法(推荐,对应实体类场景)

如果你的集合有对应的Java实体类(比如User),这是最直接的方式:

@Autowired
private MongoOperations mongoOperations;

// 获取默认集合(类名小写,比如User对应users集合)的所有文档
public List<User> getAllUsers() {
    return mongoOperations.findAll(User.class);
}

// 如果集合名和类名不一致,指定集合名称
public List<User> getAllUsersFromCustomCollection() {
    return mongoOperations.findAll(User.class, "custom_user_collection");
}

这个方法会自动把MongoDB的文档映射成你定义的实体类对象,非常方便。

2. 获取原始文档(无实体类场景)

如果没有对应的实体类,想直接获取MongoDB的原始文档对象,可以用空的Query配合find()方法:

// 获取指定集合的所有原始Document对象(适用于新版本Spring Data MongoDB)
public List<Document> getAllRawDocuments(String collectionName) {
    Query query = new Query(); // 空Query表示匹配所有文档
    return mongoOperations.find(query, Document.class, collectionName);
}

// 旧版本可以用BasicDBObject
public List<BasicDBObject> getAllRawDocumentsLegacy(String collectionName) {
    Query query = new Query();
    return mongoOperations.find(query, BasicDBObject.class, collectionName);
}

3. 借助MongoDB原生API获取

你也可以通过MongoOperations拿到原生的MongoCollection,然后用MongoDB原生的方法查询:

public List<Document> getAllDocumentsWithNativeApi(String collectionName) {
    MongoCollection<Document> collection = mongoOperations.getCollection(collectionName);
    // 调用原生find()方法并转成List
    return collection.find().into(new ArrayList<>());
}

注意事项

如果你的集合数据量很大,不建议一次性获取所有文档,这会占用大量内存。这种情况下可以用分页查询或者流式处理:

// 流式处理,避免内存溢出
public Stream<User> streamAllUsers() {
    return mongoOperations.stream(new Query(), User.class);
}

内容的提问来源于stack exchange,提问作者Navneet Mathpal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:27:48