我在mongoDb中有一个名为startDate的字段,其数据类型为字符串,其中的值以2016年6月11日格式存储。由于字符串数据类型,以下查询在find()中的影响较小。我知道如果startDate的数据类型是Date,那会更好。
"startDate": {
$gte: "01-jun-2016"
}
如何比较日期?
答案 0 :(得分:0)
你不能在mongo中使用这种格式约会,你必须检索记录然后比较。日期应以ISO8061格式存储
答案 1 :(得分:0)
最佳选择是规范化(或添加)readable_article = Document(html).summary().encode('ascii', 'replace')
字段到ISODate
索引字段进行查询:
startDate
作为(慢)替代方法,您可以使用$where命令进行自定义比较(它会评估JS代码并且无法利用索引):
db.yourcollection.find({"startDate": {$gte: ISODate("2016-06-01")}, ...);
或者某些黑客使用$regex表达式,或使用Aggregation framework使用$ project执行一些hacky日期转换并使用$ match过滤...