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

Tài liệu ngẫu nhiên từ MongoDB sử dụng dữ liệu mùa xuân

Cập nhật:

Bắt đầu với v2.0 của Spring Data, bạn có thể thực hiện việc này:

SampleOperation matchStage = Aggregation.sample(5);
Aggregation aggregation = Aggregation.newAggregation(sampleStage);
AggregationResults<OutType> output = mongoTemplate.aggregate(aggregation, "collectionName", OutType.class);

Câu trả lời ban đầu:

Các lớp trừu tượng như spring-mongo luôn bị tụt hậu so với các tính năng do máy chủ phát hành. Vì vậy, tốt nhất bạn nên tự mình xây dựng cấu trúc tài liệu BSON cho giai đoạn đường ống.

Triển khai trong một lớp tùy chỉnh:

public class CustomAggregationOperation implements AggregationOperation {
    private DBObject operation;

    public CustomAggregationOperation (DBObject operation) {
        this.operation = operation;
    }

    @Override
    public DBObject toDBObject(AggregationOperationContext context) {
        return context.getMappedObject(operation);
    }
}

Và sau đó sử dụng trong mã của bạn:

Aggregation aggregation = newAggregation(
    new CutomAggregationOperation(
        new BasicDBObject(
            "$sample",
            new BasicDBObject( "size", 15 )
        )
    )
);

Vì điều này thực hiện AggregationOperation điều này hoạt động tốt với các phương pháp trợ giúp vận hành đường ống hiện có. tức là:

Aggregation aggregation = newAggregation(
    // custom pipeline stage
    new CutomAggregationOperation(
        new BasicDBObject(
            "$sample",
            new BasicDBObject( "size", 15 )
        )
    ),
    // Standard match pipeline stage
    match(
        Criteria.where("myDate")
            .gte(new Date(new Long("949384052490")))
            .lte(new Date(new Long("1448257684431")))
    )
);

Vì vậy, một lần nữa, mọi thứ chỉ là một Đối tượng BSON vào cuối ngày. Vấn đề chỉ là có một trình bao bọc giao diện để các phương thức lớp trong spring-mongo diễn giải kết quả và nhận đối tượng BSON đã xác định của bạn một cách chính xác.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Các toán tử mẫu MongoDB

  2. Lỗi xác thực không thành công khi chỉ định cơ sở dữ liệu

  3. C # + MongoDB - ObjectId mà không sử dụng MongoDB DataTypes / Attributes

  4. MongoDB $ addToSet

  5. Phân trang hiệu quả trong MongoDB bằng cách sử dụng mgo.v2 và MongoDB> 4.2