2013-07-26 67 views
0

我們有一百臺電腦在運行,每臺電腦在幾分鐘內會發回一次心跳。我們在我們的mongodb數據庫中捕捉到這些心跳。現在我們要檢查他們最後一次發回心跳的時間。我們的一個解決方案是查詢每個節點並獲取最後的心跳時間。但是,這將對數據庫引入與我們擁有的節點數相同數量的查詢。我們想知道是否有更簡單的方法來做到這一點。Mongo查詢返回每個節點的最後更新時間

更具體地講,我們從一個節點每次心臟搏動存儲在一個單獨的文件,像下面

{ 
    "_id" : ObjectId("51d173adedfce2c67fe04c4a"), 
    "nodeId" : 260, 
    "heartBeat" : NumberLong(1374778030), 
    "status" : "DEPLOYED" 
} 
+0

您能否提供更多信息:1.您計劃在此集合中保留的#文檔2.此集合是否已分區,如果是,那麼當前鍵是什麼3.您多久查詢一次該節點的最新心跳? 4.任何其他重要查詢。謝謝 –

回答

2

您可以從ObjectId獲得時間。按節點id查詢,然後按ObjectId進行排序,並從最新文檔的objectId中獲取時間戳。這將是您最後的ping時間。

請參閱Here。和Here

0

伴隨Dylan的評論同樣的思路,你應該提供的一些信息最佳響應。除了他的評論之外,想到的是如果每次查找心跳時都進行全面掃描。也就是說,您可以將文檔中的某些節點作爲數組(或根據訪問模式創建新集合)並在應用程序層中進行操作。