我正在尝试排除使用project这个(必要的)字段。我在这个问题上挣扎了很长时间。我可以排除其他(规范之外的)字段,但不能排除规范字段中包含必需的字段。
当我向spec_id请求时,我期望:
[
{
"spec": {
"spec_id": "5",
"parent_id": "2",
"material": "plastic",
"size": "L"
}
}
]但它会返回
[
{
"spec": {
"spec_id": "5",
"parent_id": "2",
"necessary": {
"unit": "20X20",
"dateOfManufacture": "2020",
"madeIn": "KNOWN",
"producer": "KNOWN",
"importer": "KNOWN",
"productionLocation": "KNOWN"
},
"material": "plastic",
"size": "L"
}
}
]我这里有个方法
public List<UnwindInventory> selectSpecWithoutNecessary(String spec_id) {
UnwindOperation unwindOperation = Aggregation.unwind("spec");
ProjectionOperation project = Aggregation.project().andExclude("name", "spec.necessary");
MatchOperation match = Aggregation.
match(Criteria.where("spec._id").is(spec_id));
Aggregation aggregation = Aggregation.newAggregation(unwindOperation, match, project);
return mongoOperations.aggregate(aggregation, Inventory.class, UnwindInventory.class).getMappedResults();这是dto
@NoArgsConstructor
@AllArgsConstructor
@Data
public class UnwindInventory {
private String inventory_id;
private String name;
private Spec spec;
private Necessary necessary;
}发布于 2021-08-06 01:46:12
解决了。我手动投影其中的每一个。
https://stackoverflow.com/questions/68661860
复制相似问题