MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm thế nào để áp dụng nhóm theo trên tài liệu lồng nhau trong MongoDB bằng MongoTemplate?

Dữ liệu mùa xuân MongoTemplate mã cho tập hợp đã cho như sau.

Lưu ý rằng tôi đã thêm một dự án giai đoạn trước nhóm . Dự án này bắt buộc; nếu các trường lồng nhau ("details.student._id" và "details.studentStatus.statusCode") được sử dụng trực tiếp trong nhóm có lỗi "FieldPath field names may not contain '.'." và không thể được giải quyết (và điều này chỉ xảy ra khi bạn sử dụng nhiều trường trong nhóm).

Kết quả giống như kết quả của tổng hợp bạn đã cung cấp. Tôi đã sử dụng trình điều khiển Spring và MongoDB mới nhất với Java 8.

MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "spr_test");

Aggregation agg = newAggregation(
                                unwind("details"),    
                                project("_id")
                                    .and("details.student._id").as("sid")
                                    .and("details.studentStatus.statusCode").as("statuscode"),
                                group("sid", "statuscode")
                                    .count().as("total")
);

AggregationResults<Document> aggResults = mongoOps.aggregate(agg, "students", Document.class);
aggResults.forEach(System.out::println);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB cập nhật nhiều tài liệu con với hoặc truy vấn

  2. Lấy một đối tượng từ mongodb trong C #

  3. MongoDB - Giao điểm không gian địa lý của hai đa giác

  4. Mongo chuyển đổi tất cả các trường số được lưu trữ dưới dạng chuỗi

  5. Kết quả truy vấn mô hình Rails Mongoid trả về thông tin kích thước / chiều dài / số lượng sai ngay cả khi sử dụng giới hạn