Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在mongodb Spring Boot中持久化嵌套文档?_Java_Mongodb_Spring Boot_Spring Data Mongodb - Fatal编程技术网

Java 如何在mongodb Spring Boot中持久化嵌套文档?

Java 如何在mongodb Spring Boot中持久化嵌套文档?,java,mongodb,spring-boot,spring-data-mongodb,Java,Mongodb,Spring Boot,Spring Data Mongodb,我想用这样的json格式在MongoDb中保存一个文档 { "userId": "5b89411a161aef03a2ac6847", "stocks": [ { "symbol": "aapl", "company": "Apple Inc", "group": [ { "quantity": 110,

我想用这样的json格式在MongoDb中保存一个文档

{
    "userId": "5b89411a161aef03a2ac6847",
    "stocks": [
        {
            "symbol": "aapl",
            "company": "Apple Inc",
            "group": [
                {
                    "quantity": 110,
                    "date": "2018-09-02 14:33:51",
                    "price": "215.00",
                    "type": "SEC"
                }
            ]
        }
    ]
}
public interface UserBuyingRepository extends MongoRepository<BoughtStocks, String>{
    BoughtStocks findByUserId(String userId);
}
我有这样的mongoRepository设置

{
    "userId": "5b89411a161aef03a2ac6847",
    "stocks": [
        {
            "symbol": "aapl",
            "company": "Apple Inc",
            "group": [
                {
                    "quantity": 110,
                    "date": "2018-09-02 14:33:51",
                    "price": "215.00",
                    "type": "SEC"
                }
            ]
        }
    ]
}
public interface UserBuyingRepository extends MongoRepository<BoughtStocks, String>{
    BoughtStocks findByUserId(String userId);
}
我的模特是这样的

{
    "userId": "5b89411a161aef03a2ac6847",
    "stocks": [
        {
            "symbol": "aapl",
            "company": "Apple Inc",
            "group": [
                {
                    "quantity": 110,
                    "date": "2018-09-02 14:33:51",
                    "price": "215.00",
                    "type": "SEC"
                }
            ]
        }
    ]
}
public interface UserBuyingRepository extends MongoRepository<BoughtStocks, String>{
    BoughtStocks findByUserId(String userId);
}
BoughtStocks.java

public class BoughtStocks {
    @Id
    private String userId;
    private List<Stock> stocks = null;


    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public List<Stock> getStocks() {
        return stocks;
    }

    public void setStocks(List<Stock> stocks) {
        this.stocks = stocks;
    }

}
我在这里遗漏了一个基本概念。我试过用这个

@Query(value = "{'userId':'?0','stocks.symbol':'?1'}",fields = "{'stocks.symbol':'?1'}")
    List<Stock> findByStockSymbol(String userId,String symbol);
@Query(value=“{'userId':'?0','stocks.symbol':'?1'}”,fields=“{'stocks.symbol':'?1'}”)
列出findByStockSymbol(字符串用户ID、字符串符号);

但它会将用户购买的所有股票返回给我,所以我必须循环查看每一种股票,我认为这不是最佳做法。任何帮助都将不胜感激。感谢您拥有一份文档,这样您就更难实现一致性。以@DBRef链接的单独文档为目标,类似于JPA中的@ManyToOne。

谢谢您的帮助!