我有status
集合,而且我还有Spring Data MongoDB查询:
Query query = new Query(Criteria.where("reviewed").is(false)
.and("active").is(true)
.orOperator(
Criteria.where("status").is("pending"),
Criteria.where("status").is("inprogress")
.and("time").lt(new Date())
)
);
现在status
集合中的现有文档可能没有active, status, time
个字段,在这种情况下,查询将返回0结果。我想让它们成为可选的。如果它们存在,它们将成为执行查询的一部分,否则必须忽略它们。
经过一番研究,我提出了以下问题:
Query query = new Query(Criteria.where("reviewed").is(false)
.and("active").in(true, null)
.orOperator(
Criteria.where("status").in("pending", null),
Criteria.where("status").in("inprogress", null)
.and("time").lt(new Date())
)
);
这是实现我想要的正确方法还是任何建议?