使用C ++在MongoDB中查询日期字符串

时间:2018-06-28 21:47:30

标签: c++ mongodb mongo-cxx-driver

我有一个看起来像这样的MongoDB文档集合:

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

如何给定日期(假设时间始终为00:00:00.000),如何使用C ++(非传统性)MongoDB API查询该文档?也就是说,我想做类似的事情:

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");

在给定日期字符串的情况下按日期在Mongo中查找文档的正确查询是什么?

1 个答案:

答案 0 :(得分:0)

将日期作为字符串给出,将其转换为代表一天开始的std::chrono类型,并从中构造两个bsoncxx::b_date对象,它们在该天的UNIX时间段内,然后使用$gt$lt(根据包含性/排除性边界的需要进行调整)来构造查询。

有关某些示例,请参见:Find objects between two dates MongoDB

对于聚合框架,可能还有更聪明的方法。