我正在将 Spring Data 的 CrudRepository 与 mongodb 一起使用,我在编写查询时遇到了一些问题,该查询将选择具有特定子文档值的文档。这是一个例子:
{
"_id" :,
"_class" :,
"matchHeader" : {
"suspend" : {},
"active" : true,
"booked" : true,
"eventId" : NumberLong(1009314492),
"status" : ""
},
"matchInfo" : {
}
}
我需要在 matchHeader 子文档中选择具有特定 eventId 字段的文档。我尝试编写一个像这样的函数 findByMatchHeaderEventId(id) 但它根本没有帮助。我怎样才能实现它?
最佳答案
嵌套属性的属性遍历在 Spring Data MongoDB Reference Documentation 中有解释。 .
您需要正确定义您的域对象类(省略构造函数/getters/setters):
public class MyDocument {
@Id
private String id;
private MatchHeader matchHeader;
private MatchInfo matchInfo;
...
}
public class MatchHeader {
private Map<,> suspend;
private boolean active;
private boolean booked;
private Long eventId;
private String status;
}
和你的存储库类
public interface MyDocumentController extends MongoRepository<MyDocument, String> {
public List<MyDocument> findByMatchHeaderEventId(Long id);
}
否则,您可以尝试另一个答案中建议的findByMatchHeader_EventId。
关于java - 子文档字段的Spring Data MongoDB查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26887505/