java - 如何在不使用 pojo 类的情况下在 spring boot 中创建 mongodb 集合?
问题描述
我有一个带有 MongoDB 连接的 spring boot 应用程序。在使用带有@Document(Collection = "CompanyDetails") 的 POJO/Model 类时,它在“POSTMAPPING”之后成功地在 MongoDB 中创建了集合,并且结果按预期进入了 CompanyDetails 集合中。
我使用了控制器、服务、存储库,并在存储库的括号中使用了 Map<String, Object> 而不是使用 POJO 类。
控制器:
@PostMapping("/addRecords")
public Map<String, Object> addCompanyDetails(@RequestBody Map<String, Object> companyDetails) {
return companyDetailsService.addCompanyDetails(companyDetails);
}
服务:
@Service
public class CompanyDetailsService {
@Autowired
CompanyDetailsRepository companyDetailsRepository;
public Map<String, Object> addCompanyDetails(Map<String, Object> companyDetails) {
return companyDetailsRepository.insert(companyDetails);
}
}
存储库:
@Repository
public interface CompanyDetailsRepository extends MongoRepository<Map<String, Object>, String> {}
我的要求是创建一个没有 POJO 类的集合。因为,字段不固定(插入记录时)。所以,我不能在 POJO 类中声明字段并生成一个 getter setter。
由于我没有使用 POJO 类,所以当我发布记录时,它会创建一个名为“map”的集合并在其中插入记录。但是,预期是在其中创建“CompanyDetails”集合并存储数据。
解决方案
是的,使用 MongoDB 的人面临这个问题,因为 MongoDB 是一个无模式数据库,创建 POJO 会很困难。因此,这是此类用例的解决方案。
首先,您可以使用MongoClient
连接您的数据库。查看此文档以供参考:连接到 MongoDB
其次,您可以使用该 `mongoClient 对象创建数据库和集合。查看此文档以供参考创建数据库和集合
最后,您可以使用一些通用对象,例如HashMap
或BasicDBObject
来执行您的 CRUD 操作
推荐阅读
- python - 批量反向查找
- r - 格式化堆叠 geom_bar ggplot 的内部行
- r - 如何填充空白行并在r中组合分割线
- google-chrome - Chrome 进程模型:Process-per-site-instance 和 Process-per-site
- malloc - 具有不同返回值的多个函数 llvm ir 代码
- mysql - 分析 cakephp 查找操作
- ios - 如何从 iOS 设备获取硬件 sampleRate?
- sql - zkattendance sql 签入/签出问题
- php - LDAP 更改密码 PHP
- java - Java拆分字符串并将字符串的两部分存储到arraylist中