Запрос MongoDB для строки даты с C ++ - PullRequest
0 голосов
/ 29 июня 2018

У меня есть коллекция документов MongoDB, которые выглядят так:

{
  ...
  "doc_date": ISODate("2018-03-29T00:00:00.000Z"),
  ...
}

Как я могу использовать C ++ (не унаследованный) API MongoDB для запроса этого документа, учитывая только дату (при условии, что время всегда 00: 00: 00.000)? То есть я хотел бы сделать что-то вроде:

void my_func(std::string date_to_query) {
  auto result = mongo_collection.find_one(document{} 
     << "doc_date" << date_to_query 
     << finalize);  // This obviously doesn't work
  // ...
}
my_func("2018-03-29");

Какой правильный запрос для поиска документа в Монго по дате с учетом строки даты?

1 Ответ

0 голосов
/ 01 июля 2018

Учитывая дату в виде строки, преобразуйте ее в тип std::chrono, представляющий начало дня, и из этой конструкции создайте два объекта bsoncxx::b_date, которые охватывают период времени UNIX, варьирующийся в течение этого дня, затем создайте запрос используя $gt и $lt (корректируется по мере необходимости для включающих / исключающих границ).

Некоторые примеры см .: Поиск объектов между двумя датами MongoDB

Возможно, есть и более умный способ сделать это с помощью структуры агрегирования.

...