Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

371
Visualizações
¿Cómo devolver la lista de campos específicos en la consulta Java Spring Mongo Repository?

Utilizo el repositorio Java Spring y MongoDB en mi proyecto.

Aquí está la definición de DTO:

 @Document(collection = "Info") public class Info { String id, Integer count, String type … }

Necesito devolver de la consulta una lista de ID donde el campo de conteo no es cero y el tipo archivado tiene texto 'binario'.

Aquí cómo trato de implementarlo:

 @Query(value="{ 'count' : 0, 'type' : 'binary' }", fields="{ 'id' : 1 }") List<String> getInfo();

Obtengo este resultado de la consulta anterior:

 0={"_id": {"$oid": "5eb97a8139d4c62be4d90e4c"}} 1={"_id": {"$oid": "3ec97a8127d4c60cb4d90e9e"}}

Y espero este resultado:

 {"5eb97a8139d4c62be4d90e4c", "3ec97a8127d4c60cb4d90e9e"}

Entonces, como puede ver, espero obtener una lista de cadenas de identificación de la consulta anterior.

¿Alguna idea de qué debo cambiar en la consulta anterior para obtener la lista esperada de resultados de ID?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

No, eso es imposible lo que estás pensando.

Motivo: MongoDB solo puede devolver documentos JSON . Puede incluir los campos que desea que estén allí.

Esta sugerencia que puedes seguir:

Definición DTO:

 @Document(collection = "Info") public class Info { @Id private String id; private Integer count; private String type; // other fields and getters and setters }

Repositorio de muestras:

 public interface InfoRepository extends MongoRepository<Info, String> { @Query(value="{ 'count' : 0, 'type' : 'binary' }", fields="{ 'id' : 1 }") List<Info> getInfo(); }

Clase de servicio de muestra:

 @Service public class InfoService { @Autowired private InfoRepository infoRepository; public List<String> getIds() { return infoRepository.getInfo() .stream() .map(Info::getId) .collect(Collectors.toList()); } }
over 4 years ago · Santiago Trujillo Relatório

0

El {"$oid": "5eb97a8139d4c62be4d90e4c"} es la representación MongoDB Extended JSON de un ObjectID.

No devuelve una cadena porque el campo almacenado en la base de datos es de tipo ObjectID , no de tipo String .

Si desea que devuelva una cadena, debe usar la agregación con el operador $toString para convertirla.

over 4 years ago · Santiago Trujillo Relatório

0

lo mejor que puede obtener es un documento con un campo de matriz con los identificadores encontrados como este:

 { "ids" : [ "606018909fb6351e4c34f964", "606018909fb6351e4c34f965" ] }

que se puede lograr con una consulta de agregación como esta:

 db.Info.aggregate([ { $match: { count: 0, type: "binary" } }, { $project: { _id: { $toString: "$_id" } } }, { $group: { _id: null, ids: { $push: "$_id" } } }, { $project: { _id: 0 } } ])
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda