【发布时间】:2016-11-04 15:46:56
【问题描述】:
我的问题是查询一个复杂的元素。
@Entity("Activity")
public class Activity extends BaseEntity {
private String name;
private String description;
private Date deadline;
private Boolean completed;
@Embedded
private List<SubActivity> listSubActivity;
.
.
.
}
在哪里
@Entity("SubActivity")
public class SubActivity extends BaseEntity {
private String name;
private Date deadline;
private Boolean completed;
.
.
.
}
我必须找到所有子活动过期的活动。 我试试
Query<Activity> queryA = datastore.createQuery(Activity.class);
queryA.and(
queryA.criteria("deadline").lessThan(today), // where today is a Date()
queryA.criteria("completed").equal(false)
);
但它不起作用,因为还要检索此活动
{
"_id" : ObjectId("581352597dfd063decb0b357"),
"className" : "com.etherweaver.collections.Activity",
"name" : "Name",
"description" : "description",
"deadline" : ISODate("2016-11-02T23:00:00.000Z"),
"completed" : true,
"listSubActivity" : [{
"name" : "sub activity 1",
"deadline" : ISODate("2016-11-01T23:00:00.000Z"),
"completed" : true
}, {
"name" : "sub activity 2",
"deadline" : ISODate("2016-11-06T23:00:00.000Z"),
"completed" : false
}, {
"name" : "sub activity 3",
"deadline" : ISODate("2016-11-06T23:00:00.000Z"),
"completed" : true
}]
}
子活动 1 已过期但已完成。
有没有办法逐行查询嵌入条件验证的列表?
【问题讨论】:
标签: java mongodb aggregation-framework morphia