Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
聚合查询中的Mongo db java展开操作引发异常_Java_Mongodb_Aggregation Framework_Spring Mongodb - Fatal编程技术网

聚合查询中的Mongo db java展开操作引发异常

聚合查询中的Mongo db java展开操作引发异常,java,mongodb,aggregation-framework,spring-mongodb,Java,Mongodb,Aggregation Framework,Spring Mongodb,在使用嵌入式mongo文档时,我试图解开数组,但遇到了类似org.springframework.data.mapping.model.mappingInstanceException的异常:无法使用构造函数NO_构造函数和参数实例化java.util.List。我写的问题是 Aggregation agg = newAggregation( unwind("recipients"), match(Criteria.where("recipients.userId").is("

在使用嵌入式mongo文档时,我试图解开数组,但遇到了类似org.springframework.data.mapping.model.mappingInstanceException的异常:无法使用构造函数NO_构造函数和参数实例化java.util.List。我写的问题是

Aggregation agg = newAggregation(
        unwind("recipients"),
 match(Criteria.where("recipients.userId").is("800").andOperator(Criteria.where("recipients.status").is(false)
                )));
  Logs.java
 private String id;
private String userId;
private String conversationId;
 private Date createdDate;
private List<Recipients> recipients;

Recipients.java

 private String userId;
 private boolean status;

如果聚合的结果是这样的日志对象列表

AggregationResults<Logs> results = mongoOps.aggregate(agg, "logs", Logs.class);
AggregationResults=mongoOps.aggregate(agg,“logs”,logs.class);
那么收件人的基数是不正确的。它必须只是一个收件人,而不是列表,因为在展开收件人字段后,它会保存一个文档

Logs.java
  private String id;
  private String userId;
  private String conversationId;
  private Date createdDate;
  private Recipients recipients; <--
Logs.java
私有字符串id;
私有字符串用户标识;
私有字符串会话ID;
私人日期创建日期;

私人受助人;你能在调用聚合方法的地方编写代码吗?@Andriy Simonov:从我调用的另一个类中,聚合函数在一个方法中,我将使用动态用户配置文件Id调用该方法。但是,这里我已经将用户配置文件Id硬编码为800。但是,如果我这样做,我只能保存一个收件人,对吗?我想为一条记录保存一个收件人数组。然后需要两个类。用于保存和读取等常规操作的日志,以及用于聚合结果的附加类。例如,您可以将其称为LogsAggregationResult。我如何查询另一个表,以获得不同于存储记录的表的聚合结果。你认为它会起作用吗。
Logs.java
  private String id;
  private String userId;
  private String conversationId;
  private Date createdDate;
  private Recipients recipients; <--