2013-11-01 95 views
1

所以,我一直試着這樣做,但沒有得到任何結果。日期查詢適用於_id,但不適用於Date值 - MongoDB

我有一個日期值爲"scrape_systemTime"的MongoDB集合,我將它與scrape_systemTime : new Date()一起插入。

我試圖用得到的結果年長1周是:

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')}}) 

它返回預期結果。

這是怎麼發生的?在第一個查詢語法中有什麼不對嗎?

Image here

謝謝。

回答

2

文檔中的scrape_systemTime字段是一個字符串,而不是Date,它解釋了您的查詢不起作用的原因。

所以它必須是你不插入您的文檔,你以爲你是,你會得到這樣的字符串,如果你插入的字段:

scrape_systemTime: Date() 
+0

是的,這是問題。 –

相關問題