java - 如何在mongodb Spring boot中的数组内添加数据
问题描述
我想在prices
json 数组中添加数据。它已经有一个对象,每当我再次运行相同的代码块时,我都想在prices
数组中添加下一个数据。
{
"symbol": "AAPL",
"prices": [
{
"date": "2018-09-22 18:32:08",
"price": "256.00"
}//add another data here when I run the same block of code again as another object
]
}
POJO是这样的,
PastPrice.java
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"symbol",
"prices"
})
public class PastPrice {
@Id
@JsonProperty("symbol")
private String symbol;
@JsonProperty("prices")
private List<Price> prices = null;
@JsonProperty("symbol")
public String getSymbol() {
return symbol;
}
@JsonProperty("symbol")
public void setSymbol(String symbol) {
this.symbol = symbol;
}
@JsonProperty("prices")
public List<Price> getPrices() {
return prices;
}
@JsonProperty("prices")
public void setPrices(List<Price> prices) {
this.prices = prices;
}
}
然后,Price.java
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"date",
"price"
})
public class Price {
@Id
@JsonProperty("date")
private String date;
@JsonProperty("price")
private String price;
@JsonProperty("date")
public String getDate() {
return date;
}
@JsonProperty("date")
public void setDate(String date) {
this.date = date;
}
@JsonProperty("price")
public String getPrice() {
return price;
}
@JsonProperty("price")
public void setPrice(String price) {
this.price = price;
}
}
我将这样的数据保存在控制器中
@GetMapping("/save")
public void getAndSaveStocks() {
RestTemplate restTemplate = new RestTemplate();
StockData stockData = restTemplate.getForObject(Constants.API,
StockData.class);
List<Company> sl = stockData.getCompanies();
PastPrice pastPrice = new PastPrice();
for (Company company : sl) {
pastPrice = new PastPrice();
List<Price> prices = new ArrayList<>();
Price price = new Price();
price.setDate(CurrentDate.getCurrentTimeWithTimeZone());
price.setPrice(company.getLTP());
prices.add(price);
pastPrice.setSymbol(company.getSymbol());
pastPrice.setPrices(prices);
}
}
任何帮助,将不胜感激。谢谢
解决方案
下面应该工作:
- 将标价移出公司循环
循环后保存过去的价格。
@GetMapping("/save") 公共无效 getAndSaveStocks() {
RestTemplate restTemplate = new RestTemplate(); StockData stockData = restTemplate.getForObject(Constants.API, StockData.class); List<Company> sl = stockData.getCompanies(); PastPrice pastPrice = new PastPrice(); List<Price> prices = new ArrayList<>(); for (Company company : sl) { Price price = new Price(); price.setDate(CurrentDate.getCurrentTimeWithTimeZone()); price.setPrice(company.getLTP()); prices.add(price); } pastPrice.setSymbol(company.getSymbol()); pastPrice.setPrices(prices);
}
推荐阅读
- url - 在 Postman 中将文件路径作为参数传递
- xaml - 可以更改 UWP 拖放 (DragUI) 标题的字体吗?
- rust - 在 Rust 中按值传递数组
- html - VBA:在 Outlook 电子邮件中嵌入 PNG - 为自己工作而不为他人显示
- spring-boot - 禁用 Spring Security 导致无法加载应用程序上下文
- javascript - 当 scrollY 等于 0.52 时动画 - Next.js ( 使用 framer-motion )
- node.js - 使用 app.js (express) 运行 NestJS 应用程序
- node.js - 如何使用 AWS Lambda (nodeJS) 查询 AWS 外部的 MySQL 数据库?
- rust - std::thread::JoinHandle::join 如何捕捉恐慌?
- c++ - 以某种方式读取文件中的数据