2012-12-02 106 views
3

這裏有一些關於如何將查詢結果保存到javascript varialbe的問題,但我只是無法實現它們。關鍵是我有一個很難的查詢,所以這個問題在我看來是獨一無二的。如何將mongodb查詢的結果保存到JavaScript變量中?

這是問題所在。我有一個名爲「drives」的集合和一個名爲「driveDate」的鍵。我需要保存1個變量和最小日期,其他日期最大。

的最小日期查詢是:

> db.drives.find({},{"_id":0,"driveDate":1}).sort({"driveDate":1}).limit(1) 

結果是:

{ "driveDate" : ISODate("2012-01-11T17:24:12.676Z") } 

丹我如何保存到一個變量,我可以這樣做:

tmp = db.drives.find({},{"_id":0,"driveDate":1}).sort({"driveDate":1}).limit(1) 

謝謝!

+0

您的查詢在哪裏運行?它在服務器端嗎?還是它在客戶端運行? – Ivan

+0

@Ivan,查詢是直接在mongo控制檯上。 (命令「mongo」)。數據庫本地安裝在我的機器上。我已經想出瞭如何做到這一點。謝謝。 – otmezger

回答

11

假設你試圖做到這一點在shell:

tmp = db.drives.find({}, {_id:0, driveDate:1}).sort({driveDate:1}).limit(1).toArray()[0] 

find返回您需要遍歷檢索實際文件的光標。在光標上調用toArray將其轉換爲文檔數組。

+1

我不確定是否'sort()'在'findOne'上工作,因爲它不會返回一個遊標,因爲這個鏈沒有'sort()的功能' – Sammaye

+0

嗨,謝謝你的回答。我不斷收到此錯誤:「Sun Dec 2 21:58:13 TypeError:db.drives.findOne({},{_id:0,driveDate:1})。sort不是函數(shell):1」.. 。不知何故,findOne無法使用排序 – otmezger

+0

@otmezger對不起,Sam的權利,似乎沒有辦法用shell中的findOne排序。查看更新的答案。 – JohnnyHK

3

經過一段時間的摸索,我得到了解決方案。這裏是,以供將來參考:

var cursor = db.drives.find({},{"_id":1}).sort({"driveDate":1}).limit(1) 

然後,我可以從光標獲取文檔這樣

var myDate = cursor.next() 

就是這樣。感謝您的幫助

相關問題