DATAMONGO-1893 - Allow exclusion of other fields than _id in aggregation $project.
As of MongoDB 3.4 exclusion of fields other than _id is allowed so we removed the limitation in our code. Original pull request: #538.
This commit is contained in:
committed by
Mark Paluch
parent
aea40ca490
commit
7f9ab3bb44
@@ -140,11 +140,6 @@ public class ProjectionOperation implements FieldsExposingAggregationOperation {
|
||||
*/
|
||||
public ProjectionOperation andExclude(String... fieldNames) {
|
||||
|
||||
for (String fieldName : fieldNames) {
|
||||
Assert.isTrue(Fields.UNDERSCORE_ID.equals(fieldName),
|
||||
String.format(EXCLUSION_ERROR, fieldName, Fields.UNDERSCORE_ID));
|
||||
}
|
||||
|
||||
List<FieldProjection> excludeProjections = FieldProjection.from(Fields.fields(fieldNames), false);
|
||||
return new ProjectionOperation(this.projections, excludeProjections);
|
||||
}
|
||||
|
||||
@@ -198,10 +198,13 @@ public class ProjectionOperationUnitTests {
|
||||
assertThat(oper.get(MOD)).isEqualTo((Object) Arrays.<Object> asList("$a", 3));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class) // DATAMONGO-758
|
||||
public void excludeShouldThrowExceptionForFieldsOtherThanUnderscoreId() {
|
||||
@Test // DATAMONGO-758, DATAMONGO-1893
|
||||
public void excludeShouldAllowExclusionOfFieldsOtherThanUnderscoreId/* since MongoDB 3.4 */() {
|
||||
|
||||
new ProjectionOperation().andExclude("foo");
|
||||
ProjectionOperation projectionOp = new ProjectionOperation().andExclude("foo");
|
||||
Document document = projectionOp.toDocument(Aggregation.DEFAULT_CONTEXT);
|
||||
Document projectClause = DocumentTestUtils.getAsDocument(document, PROJECT);
|
||||
assertThat((Integer) projectClause.get("foo")).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-758
|
||||
|
||||
Reference in New Issue
Block a user