所以,我已经尝试了几个小时,但没有得到任何结果。
我有一个MongoDB集合,它有一个日期值"scrape_systemTime",我正在用scrape_systemTime : new Date()插入它。
我正试图通过以下方法来获得比我早一周的结果:
db.scrape.find({scrape_systemTime: { $lt: new Date( Date.now() - 86400000*7)}})
它应该返回一组看起来像下面的对象的文档,但是它什么也不返回。(请看"scrape_systemTime"属性,它有一个星期前的日期。)
[{
"newspaperID" : "6",
"scrape_systemTime" : "Fri Oct 25 2013 13:14:10 GMT+0000 (UTC)",
"_id" : ObjectId("526a6ea1985ba76408000010"),
"languageID" : "1",
"scrape_tabs_title" : "India",
"scrape_tabs_href" : "http://www.indianexpress.com/supplement/India/798/",
"scrape_thumb" : "images/default/noimage.jpg",
"scrape_href" : "http://www.indianexpress.com/news/political-parties-woo-chhattisgarh-youth-on-facebook-whatsapp/1187180/",
"scrape_title" : "Political parties woo Chhattisgarh youth on Facebook, WhatsApp",
"scrape_largeimage" : "http://static.indianexpress.com/m-images/Fri Oct 25 2013, 17:57 hrs/M_Id_433064_facebook.jpg",
"scrape_detail_article_text" : "",
"scrape_newstime" : "PTI : Raipur, Fri Oct 25 2013, 18:11 hrs",
"scrape_status" : "Pending",
"viewCount" : 0,
"error_log" : "OK",
"ip" : "192.168.0.101"
}, ...]但是,如果我将_id用于日期条件,即创建带有一个星期的时间戳的ObjectId(),并在查询中使用,如下所示:
db.scrape.find({_id: { $lt: ObjectId( Math.floor( new Date( Date.now() - 86400000*7 ) / 1000 ).toString(16) + '0000000000000000')}})它返回预期的结果。
为什么会发生这种情况?第一个查询语法有什么问题吗?
像在这里
谢谢。
发布于 2013-11-01 13:24:28
文档中的scrape_systemTime字段是一个字符串,而不是一个Date,这解释了为什么您的查询不能工作。
因此,您肯定不是像您所想的那样插入文档,因为如果您将该字段插入如下所示,就会得到这样的字符串:
scrape_systemTime: Date()https://stackoverflow.com/questions/19726561
复制相似问题