作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个可以正常工作的查询,它只返回我的实体的一个属性 (Prl):
@Query("{'recibido' : null ,'activo' : true}")
public List<EmpleadoIdDTO> findIdsEmpleadosPrlActivoRecibidoIsNull();
类:
public class EmpleadoIdDTO {
private Long empleadoId;
public Long getEmpleadoId() {
return empleadoId;
}
public void setEmpleadoId(Long empleadoId) {
this.empleadoId = empleadoId;
}
}
我需要将此查询传递给标准,因为它会增长:
import java.util.ArrayList;
import java.util.List;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.query.BasicQuery;
import org.springframework.data.mongodb.core.query.Criteria;
import com.xxx.crm482.domain.Prl;
import com.xxxx.crm482.service.dto.FilterPrlDTO;
public class PrlRepositoryImpl implements PrlRepositoryCustom {
private final MongoOperations mongoOperations;
public PrlRepositoryImpl(MongoOperations mongoOperations) {
this.mongoOperations = mongoOperations;
}
@Override
public List<Prl> find(FilterPrlDTO filterPrlDTO) {
List<Criteria> andCriteria = new ArrayList<>();
andCriteria.add(Criteria.where("activo").is(true));
andCriteria.add(Criteria.where("recibido").is(null));
Criteria orCriteria = new Criteria().andOperator(andCriteria.toArray(new Criteria[andCriteria.size()]));
Document projection = new Document("empleadoId", 1);
return mongoOperations.find(new BasicQuery(orCriteria.getCriteriaObject(), projection), Prl.class);
}
}
这里我需要的不是返回实体“Prl”,而是返回实体的属性“empleadoId”
最佳答案
您可以通过链接查询条件来简化您的方法。将字段投影添加到 Query 类。
添加流以映射您投影的字段。
@Override
public List<Long> find(FilterPrlDTO filterPrlDTO) {
Criteria criteria = Criteria.where("activo").is(true).and("recibido").is(null);
Query query = new Query(criteria);
query.fields().include("empleadoId");
List<String> empleadoIds = mongoOperations.find(query, Prl.class).stream().map(Prl::getEmpleadoId).collect(Collectors.toList());
return empleadoIds;
}
关于mongodb - 在 spring mongodb 查询中指定单字段投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47903629/
我是一名优秀的程序员,十分优秀!