6
respostas

Buscar por data

Mestre, estou gostando muito deste curso de mongo, inclusive estou fazendo uma classe java conectar com o mongo e trazer dados, esta muito show.

Mas tenho uma dúvida, gravei um campo no banco com o valor de uma data em formato String ("2008-01-09 14:56:06") e consigo fazer uma busca exata, mas não consigo fazer uma busca por range, é possível?

Exemplo de como estou fazendo:

ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class);
MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate");

Query query = new Query(Criteria.where("opendate").is("2016-05-28 07:31:00"));
List<Record> itens = mongoOperation.find(query, Record.class);
6 respostas

Fala aí Willians, blz?

Cara, você está usando qual lib para conectar ao Mongo?

Estou usando o spring:

package com.williansmartins.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.MongoTemplate;

import com.mongodb.MongoClient;

/**
 * Spring MongoDB configuration file
 * 
 */
@Configuration
public class SpringMongoConfig{

    public @Bean
    MongoTemplate mongoTemplate() throws Exception {

        MongoTemplate mongoTemplate = new MongoTemplate(new MongoClient("127.0.0.1"),"yourdb");
        return mongoTemplate;

    }

}

E as classes abaixo para manipular:

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

Willians,

Qual o tipo de objeto que você usou para mapear sua data? Calendar, LocalDate, LocalDateTime, java.util.Date?

Pelo que eu entendi para comparação com datas, você deve utilizar java.util.Date. Aí dependendo do tipo que você usou você vai ter que converter.

O mapeamento foi feito com String mesmo não com objeto de Data.

Tente usar assim:

Criteria.where("opendate").gte(startDate).lt(endDate)

Obrigado, vou entender como usar a Criteria.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software