首页 > 解决方案 > 从没有在springboot JPA中定义bean的mongodb获取所有集合数据

问题描述

因为 mongo 集合中的字段是对象到对象的变化。在对象中有 4 个字段,其他有 8 个字段,所以我们如何获取所有集合数据。

标签: javamongodbspring-bootjpacollections

解决方案


您可以使用 MongoDB Spring Data 的MongoTemplate API 方法,如下所示。

The MongoTemplatefindAll可以使用类的方法。该方法要求指定 entityClass。如果您没有定义实体类,则可以指定通用org.bson.Document类(参见下面的示例代码)。

public <T> List<T> `findAll`(Class<T> entityClass, String collectionName)

从指定集合中查询类型为 T 的对象的列表。

该对象是使用 MongoConverter 实例从 MongoDB 本机表示转换而来的。除非另有配置,否则将使用 MappingMongoConverter 的实例。如果您的集合不包含同质类型集合,则此操作将不是映射对象的有效方法,因为类类型的测试是在客户端而不是在服务器上完成的。

例子:

MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "test");
List<Document> list = mongoOps.findAll(Document.class, "person");
list.forEach(doc -> System.out.println(doc.toJson()));

在上面的代码中,personcollection被读取;并且该集合具有具有不同字段的文档。对于输入文档:

{ "_id" : 1, "fld" : "str-1" }
{ "_id" : 3, "fld" : "str-3", "fld2" : 13 }
{ "_id" : 10, "dt" : ISODate("2020-03-07T03:08:49.855Z") }

输出是:

{"_id": 1.0, "fld": "str-1"}
{"_id": 3.0, "fld": "str-3", "fld2": 13.0}
{"_id": 10.0, "dt": {"$date": 1583550529855}}

推荐阅读