文檔結構:
@Document class Order {
@Id String id;
@DBRef User user; // 關聯用戶
String title;
}
@Document class User {
@Id String id;
String name;
}
需查詢訂單並關聯獲取用戶 `name`,類似 SQL `JOIN`。
**MongoDB 不支援原生 JOIN**,Spring Data MongoDB 也不提供自動關聯查詢。常用策略:
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.lookup("user", "user.$id", "_id", "userInfo"),
Aggregation.unwind("userInfo"),
Aggregation.project("title", "userInfo.name")
);
AggregationResults<OrderDTO> results = mongoTemplate.aggregate(aggregation, "order", OrderDTO.class);
若關聯查詢頻繁且數據量大,優先考慮 **冗餘字段** 或 **聚合管道**;簡單場景用雙查詢組裝即可。