Mongodb 如何编写Mongo查询以查找两个日期之间的视频详细信息

Mongodb 如何编写Mongo查询以查找两个日期之间的视频详细信息,mongodb,Mongodb,在我的mongodb中有一个视频集合,其中有一个creationTime列表,如下所示,我希望使用creationTime在任意两个日期之间获取记录 “creationTime”:{ “日志时间”:ISODate(“2013-08-12T10:54:44.914Z”), “logtimeStr”:“12-08-2013 04:24:44”, “日”:12日, “月”:8, “年份”:2013年, “小时”:16, “min”:24, “第二”:44 }使用Mongodb比较运算符和(或$lte和

在我的mongodb中有一个视频集合,其中有一个creationTime列表,如下所示,我希望使用creationTime在任意两个日期之间获取记录

“creationTime”:{ “日志时间”:ISODate(“2013-08-12T10:54:44.914Z”), “logtimeStr”:“12-08-2013 04:24:44”, “日”:12日, “月”:8, “年份”:2013年, “小时”:16, “min”:24, “第二”:44
}

使用Mongodb比较运算符和(或$lte和$gte用于包含限制)

如何创建开始日期和结束日期取决于您使用的语言。对于javascript,您将使用
newdate()


这是编写范围查询的一种更好的方法,还需要提到,
$和
在MongoDB中是隐式的,只需要在实际需要它的特定情况下使用:

db.collection.find({
“creationTime.logtime”:{
“$gt”:新日期(“2014-08-01”),“$lt”新日期(“2014-08-13”)
}
})
至少这是范围查询的理论。但是目前你有一个很大的问题,那就是你的日期实际上被存储为字符串

这是一个巨大的问题,因为基本上当这些是字符串(尤其是当前格式化的字符串)时,就会陷入对字符串的词法比较中,而这些字符串不能正确地进行词法比较,因为其中一个值比另一个值“大”

字符串需要按照“年”、“月”和“日”的顺序显示,并使用两位数字表示,以便匹配词汇比较。您当前拥有的内容不适用


但不要更改字符串,将其更改为正确的日期类型,然后所示的查询将实际正常工作。

@user3656078请告诉您什么?谢谢您的建议,但我在mongo shell上编写了这种类型的查询,但我无法在条件中转换这些查询。其中。。。。你能帮助我吗?查询是…db.collection.count({$and:[{“creationTime.day”:{“$gte”:1,$lte:23},{“creationTime.month”:{“$gte”:5,$lte:5},{“creationTime.year”:{“$gte”:2014,$lte:2014}}})谢谢我使用BasicQuery类解决了这个问题
db.myVideoCollection.find({
 '$and':[
          {'$creationTime.logtime':{'$gt':START_DATE },
          {'$creationTime.logtime':{'$lt':END_DATE }
        ]
 })