我试图在讨论集中记录过去7天,但它根本不会给我任何记录
这是我用来查询的内容
db.discussions.find( { "date_added": { $gte: new Date((new Date().getTime() - (15 * 24 * 60 * 60 * 1000))) } } );
date_added字段是ISODate
"date_added" : ISODate("2017-06-14T12:49:14Z")
我尝试在线搜索解决方案,但我找不到任何内容
答案 0 :(得分:0)
您的查询看起来有效。
我用这两个文件创建了一个集合:
/* 1 */
{
"_id" : ObjectId("59b2a55e574088f47d0faa0b"),
"name" : "before",
"date_added" : ISODate("2017-08-31T12:49:14.000Z")
}
/* 2 */
{
"_id" : ObjectId("59b2a56c574088f47d0faa0f"),
"name" : "after",
"date_added" : ISODate("2017-09-07T12:49:14.000Z")
}
我已经运行了这个查询:
db.getCollection('sample').find(
{"date_added":
{
// (7 * 24 * 60 * 60 * 1000) is 7 days of millis
$gte: new Date((new Date().getTime() - (7 * 24 * 60 * 60 * 1000)))
}
})
这与您使用的查询形式相同,并返回一个文档:
{
"_id" : ObjectId("59b2a56c574088f47d0faa0f"),
"name" : "after",
"date_added" : ISODate("2017-09-07T12:49:14.000Z")
}
使用.explain()
运行该查询清楚地表明,已解析的查询包含date_added
谓词的正确派生值:
"parsedQuery" : {
"date_added" : {
"$gte" : ISODate("2017-09-01T14:16:45.489Z")
}
}
所有这些都表明你没有获得任何记录的原因在于其他地方。例如:
T-15d
?data_added
肯定是一个ISODate吗?