Với Spring-Data, bạn có thể sử dụng chú thích @Document để chỉ định bộ sưu tập nào cần lưu đối tượng. Nói rằng tôi có hai lớp, Sinh viên và Giáo viên, cả hai đều tiếp tục vào bộ sưu tập người. Khi tôi thực thi đoạn mã sau:Mongodb Spring-Data truy vấn nhiều lớp được lưu trữ trong cùng một bộ sưu tập
mongo.find(new Query(), Teacher.class);
kết quả chứa cả Học sinh và Giáo viên. Nhìn vào dữ liệu được tạo bởi Spring-Data, mỗi tài liệu chứa một trường "_class" cho biết lớp đó được duy trì từ đó.
Đây là trường không được sử dụng để tìm kiếm làm bộ lọc chỉ trả lại cho giáo viên? Làm cách nào để tôi chỉ truy vấn Giáo viên khác ngoài việc thực hiện việc này:
mongo.find(new Query().addCriteria(where("_class").is(Teacher.class.getCanonicalName()), Teacher.class);
Cảm ơn Oliver, tôi sẽ nâng cao một vé nếu tôi đưa ra một giải pháp tốt. – ltfishie
Đi qua mongodb Jira, tôi đã xem vé này https://jira.springsource.org/browse/DATAMONGO-128 là thị trường cố định là 1.0.M3. Đây có phải là nguồn gốc không? – ltfishie
Có nhưng điều này không chạm vào kịch bản của bạn. Vé bao gồm việc có thể lưu trữ 'Person' và' Teacher' bên trong cùng một bộ sưu tập và có thể truy vấn các đối tượng từ nó và nhận 'Person' và' Teacher' instantiated (do đó thông tin kiểu cần thiết). Nó không thực sự xem xét để cải thiện "chỉ đọc" giáo viên' đối tượng "kịch bản. –