Sql Эквивалент запроса в MongoDB - PullRequest
0 голосов
/ 20 марта 2020

У меня есть этот запрос весной MySql:

@Query(value="SELECT if(Count(*) > 0, 'true', 'false') as bool FROM season c WHERE c.archived=0 and c.user_seasons_id=:idUser and :seasondate BETWEEN c.date_debut and c.date_fin",nativeQuery = true) public Boolean existsSeasonDates(@Param ("seasondate") Date seasondate,@Param ("idUser") Long idUser);

Мне нужно изменить тело @Query с mongoDB вместо MySql.

Спасибо.

1 Ответ

0 голосов
/ 20 марта 2020

Я, вероятно, должен добавить комментарий, запрашивающий дополнительную информацию у OP, вместо того, чтобы публиковать ответ, но в духе попытки перевести этот оператор SQL в эквивалентный запрос MongoDB (и среду данных), эти данные:

var r =
[
 // IN: Only good one:                                                                                              
 { _id: 0, archived: 0, user_seasons_id: "U1",
   date_debut: new ISODate("2020-01-01"), date_fin: new ISODate("2020-01-06") }

 // OUT: seasondate is beyond date_fin                                                                          
 ,{ _id: 1, archived: 0, user_seasons_id: "U1",
   date_debut: new ISODate("2020-01-01"), date_fin: new ISODate("2020-01-03") }

 // OUT:  Right range, wrong ID.                                                                                    
 ,{ _id: 2, archived: 0, user_seasons_id: "U99",
   date_debut: new ISODate("2020-01-01"), date_fin: new ISODate("2020-01-06") }

 // OUT:  not archived == 0                                                                                         
 ,{ _id: 3, archived: 1, user_seasons_id: "U99",
    date_debut: new ISODate("2021-01-01"), date_fin: new ISODate("2021-01-03") }
         ];

обработано этим простым конвейером:


seasondate = new ISODate("2020-01-04");
user = "U1";

c = db.foo.aggregate([
{$match: {
        "archived":0
        ,"user_seasons_id":user
        ,"date_debut": {"$lt": seasondate}
        ,"date_fin": {"$gte": seasondate}
    }}
]);

даст всего _id:0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...