Обновление:
Начиная с v2.0 данных Spring, вы можете сделать это:
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
, это хорошо работает с вспомогательными методами вывода операций. i.e:
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-объект.
Я не верю так. Если Вам нужна эта информация, я предлагаю включая a <meta>
элемент генерировал на сервере, что можно свериться с JavaScript.
Например, с PHP:
<meta id="request-method" name="request-method" content="<?php echo htmlentities($_SERVER['REQUEST_METHOD']); ?>">
<script type="text/javascript">
alert(document.getElementById("request-method").content);
</script>
Если Вы нуждаетесь в этой функциональности, имеете сервер, обнаруживают, какой метод использовался, и затем измените что-то в DOM, который можно затем считать позже.
Вы наклоняетесь, делают это для нормального отправляет/получает однако, можно добраться до этой информации, если Вы используете вызов xmlhttp и используете getResponseHeader