我正試圖用多個虛擬機實現集中化邏輯。 我有一個應用程序在5個虛擬機上運行。只有1個虛擬機負責完成一項任務。 爲了讓我將該VM的主機名寫入數據庫,但要將該名稱更新爲數據庫,必須使用Java客戶端API實現鎖定,因爲同時可能會有2-3個虛擬機出現。 如何實現這一目標?Mongo DB - 鎖定收集和插入記錄
更新: 我可以使用findandModify。但我的代碼看起來像這樣
{
if(collection.getCount({"taskName" :"Task1"}) == 0){
//insert record ------ **I can use findAndModify here**
}
}
但是如果兩個虛擬機上來的同時,然後將兩者如果塊裏面去,因爲文件不可用。
據我所知,findAndModify是原子。因此,在1個虛擬機發出findAndModify命令後,我們將有1個帶有主機名的記錄。但是下一個虛擬機也會執行相同的操作,並用主機名重新更新記錄。
請讓我知道,如果我不清楚我的問題。
我有一個詞給你:'findAndModify' –
謝謝。我更新了我的問題。請求您檢查 –
使用如下所示:'findAndModify({hostname:''},{...})'。這樣,第一個虛擬機將設置其主機名,但下一個將無法找到一個文件(因爲現在主機名不是空的) –