MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Случайни документи от MongoDB, използващи spring-data

Актуализация:

Започвайки с v2.0 на Spring Data можете да направите това:

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

Оригинален отговор:

Слоевете на абстракция като spring-mongo винаги ще изостават много от пуснатите от сървъра функции. Така че е най-добре сами да конструирате структурата на документа BSON за етапа на конвейера.

Внедрете в персонализиран клас:

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);
    }
}

И след това използвайте във вашия код:

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

Тъй като това имплементира AggregationOperation това работи добре със съществуващите помощни методи за работа на тръбопровода. т.е.:

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")))
    )
);

Така че отново всичко е просто BSON обект в края на деня. Въпросът е само да имате обвивка на интерфейса, така че методите на класа в spring-mongo да интерпретират резултата и да получат вашия дефиниран BSON обект правилно.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongorestore от самостоятелен към replicaset

  2. MongoDB $max оператор на конвейер за агрегиране

  3. Как MongoDB сортира записи, когато не е посочен ред на сортиране?

  4. Премахнете вградения документ във вложен масив от документи

  5. MongoDB $in оператор на конвейера за агрегация