我正试图用多个虚拟机实现集中化逻辑。 我有一个应用程序在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:''},{...})'。这样,第一个虚拟机将设置其主机名,但下一个将无法找到一个文件(因为现在主机名不是空的) –