0

我在使用 Sping 的 BasicQuery 时遇到问题

这是我的查询:

 public List<Voyage> getVoyages(String destination, Date datedebut, int duree)
            throws MongoException {
        Query query = new Query();
        Calendar c = Calendar.getInstance();
        c.setTime(datedebut);
        c.add(Calendar.DATE,duree);

        BasicQuery q= new BasicQuery("{$or : [{paysDestination : {$elemMatch : {nom : '"+destination+"'}}},{paysPrincipal : {nom : '"+destination+"'}}], debut : {$lte : {$date : "+datedebut+"}}, fin : {$gte : {$date : "+c.getTime()+"}}}");

         return mongoTemplate.find(q, Voyage.class);
    }

我的数据库中有文件,但我没有收到任何人,我的清单是空的。此外,我没有捕捉到任何 MongoException ...

你有解决办法吗?

4

2 回答 2

0

我达成了妥协,将 BasicQuery 与 Criteria 混合:

BasicQuery q = new BasicQuery("{$or : [{paysDestination : {$elemMatch : {nom : '"+destination+"'}}},{paysPrincipal : {nom : '"+destination+"'}}]}");
q.addCriteria(Criteria.where("debut").lte(datedebut).and("fin").gte(c.getTime()));

如果您仍然有任何仅使用 BasicQuery 对其进行编码的解决方案,请不要犹豫!

于 2014-02-04T14:37:33.043 回答
0

对于任何寻找这个的人: {<dateField>: ISODate("2022-01-24")} 作品。就像这样: {<dateField>: ISODate("2022-01-24T13:40:00.000Z")}

于 2022-01-24T12:39:43.737 回答