我正在尝试使用$ gte和$ lte检索在特定时间段内支付的订单。不幸的是,支付日期被作为字符串存储在记录中。以这种字符串格式:2019年3月12日。所以当我使用$ gte和$ lte时,选择的数据是错误的。我认为这是因为字符串问题。所以即时通讯尝试比较之前将字符串转换为日期。下面是我尝试使用datefromstring的方法。
db.orders.find({ 'received.breakdown': { $elemMatch : { 'paid_on' : {'$gt': [
{ "$dateFromString": { "dateString": "$paid_on", "format": "%d-%m-%Y" }},
ISODate("2019-03-11T00:00:00Z")
]} } } });
尝试使用转换:
db.orders.find({ 'received.breakdown': { $elemMatch : { 'paid_on' : {'$gt': [
{ "$convert": { "include": "$paid_on", "to": "date" }},
ISODate("2019-03-11T00:00:00Z")
]} } } });
如何将字符串转换为日期并在提供的日期内检索正确的数据?